Bueno, esto depende en gran medida de la biblioteca de acceso a datos.
Puede devolver cualquier tipo compatible con SQL como parámetro. Esto incluye tipos de SQL complejos y tipos de colección. Pero la mayoría de las bibliotecas simplemente no son capaces de manejar los tipos de objetos de Oracle.
De cualquier manera, mis ejemplos utilizarán estos tipos de objetos:
create type SomeType as object(Field1 VarChar(50));
create type SomeTypeList as table of SomeType;
Cuando su biblioteca de acceso puede manejar los tipos de objetos, sólo podían devolver una lista de objetos PL/SQL:
begin
:list := SomeTypeList(SomeType('a'),SomeType('b'),SomeType('c'));
end;
Si no, puede hackearlo forzando esta lista en una selección y devolver su resultado como un cursor:
declare
list SomeTypeList;
begin
list := SomeTypeList(SomeType('a'),SomeType('b'),SomeType('c'));
open :yourCursor for
SELECT A
FROM table(list);
end;
No puede retu rn datos del bloque PLSQL anónimo. –
sí, puede, por ejemplo, en 'node oracledb' utiliza' oracledb.BIND_OUT' check https://github.com/oracle/node-oracledb/blob/master/doc/api.md – Toolkit