bajopalabra.ar escribió:
> el tema de la devolución de varios lotes
> de última, lo puedo llegar a manejar en otra capa
Puedes retornar SETOF refcursor en una función, y de cada cursor obtener un
resultado diferente. Prueba algo así:
alvherre=# create or replace function refcursors () returns setof refcursor
language plpgsql as $$
declare
cursor1 refcursor;
cursor2 refcursor;
begin
open cursor1 for values (1), (2), (3);
return next cursor1;
open cursor2 for values ('foo'), ('bar'), ('baz');
return next cursor2;
end;
$$
;
CREATE FUNCTION
alvherre=# begin;
BEGIN
alvherre=# select * from refcursors();
refcursors
--------------------
<unnamed portal 3>
<unnamed portal 4>
(2 filas)
alvherre=# fetch all from "<unnamed portal 3>";
column1
---------
1
2
3
(3 filas)
alvherre=# fetch all from "<unnamed portal 4>";
column1
---------
foo
bar
baz
(3 filas)
alvherre=# commit;
COMMIT
--
Alvaro Herrera http://www.amazon.com/gp/registry/CTMLCN8V17R4
"In a specialized industrial society, it would be a disaster
to have kids running around loose." (Paul Graham)
--
TIP 7: no olvides aumentar la configuración del "free space map"