Sì, fondamentalmente, la procedura può restituire un dato di un tipo complesso, utilizzabile tramite pl/sql o da un linguaggio che supporti tale tipo di dato. Ma non si tratta dell'output che avresti facendo una select.
Difatti, se esegui tale query da sqlplus:
codice:
select table_name, tablespace_name from user_tables;
avrai un output.
Mentre, se provi a trasformalo in un blocco PL/SQL, in questo modo:
codice:
begin
select table_name, tablespace_name from user_tables;
end;
/
e poi provi ad eseguirlo, sempre da sqplus, avrai un errore.
Fondamentalmente non la considero una limitazione, se una cosa è una procedura non è una vista.