Olá pessoal
Alguém poderia me ajudar com uma questão por Gentileza. Tem como abrir um cursor a partir de um retorno de cursor retornado por um função ? Vou exemplificar da seguinte forma: este exemplo abaixo funciona corretamente: CREATE TABLE table_1 (col text); INSERT INTO table_1 VALUES ('123'); CREATE TABLE table_2 (col text); INSERT INTO table_2 VALUES ('456'); CREATE FUNCTION myfunc(refcursor, refcursor) RETURNS SETOF refcursor AS $$ BEGIN OPEN $1 FOR SELECT * FROM table_1; RETURN NEXT $1; OPEN $2 FOR SELECT * FROM table_2; RETURN NEXT $2; END; $$ LANGUAGE plpgsql; SELECT * FROM myfunc('a', 'b'); FETCH ALL IN a; /* este retornara 123 */ FETCH ALL IN b; /* este retornara 456 */ Não estou conseguindo quando uso da seguinte forma: CREATE OR REPLACE FUNCTION funcao1(refcursor) RETURNS refcursor AS $$ BEGIN OPEN $1 FOR SELECT * FROM table_1; RETURN $1; END; $$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION funcao2(refcursor) RETURNS refcursor AS $$ BEGIN OPEN $1 FOR SELECT * FROM table_2; RETURN $1; END; $$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION myfunc(refcursor, refcursor) RETURNS SETOF refcursor AS $$ BEGIN OPEN $1 FOR SELECT * FROM funcao1('aux1'); RETURN NEXT $1; OPEN $2 FOR SELECT * FROM funcao2('aux2'); RETURN NEXT $2; END; $$ LANGUAGE plpgsql; SELECT * FROM myfunc('a', 'b'); FETCH ALL IN a; /* este retornara aux1 */ FETCH ALL IN b; /* este retornara aux2 */ A QUESTÃO É: COMO FAZER neste exemplo acima PARA O FETCH ALL IN a RETORNAR 123 E FETCH ALL IN b RETORNAR 456 Agradeço desde já e desejo um bom ano a todos! Jairo de Melo
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral