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.