Em 4 de janeiro de 2011 11:07, Jairo <[email protected]> escreveu:

>
> <corte>
>
>
>
> *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!
>
>
>
>
>
Tente:


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 void AS $$
BEGIN

    perform * FROM funcao1($1);
    perform * FROM funcao2($2);
    return;
END;
$$ LANGUAGE plpgsql;

BEGIN;

  SELECT myfunc('a', 'b');

  FETCH ALL IN a;
  FETCH ALL IN b;

ROLLBACK;


A única mudança que fiz foi na "myfunc".

-- 
Fabrízio de Royes Mello
>> Blog sobre TI: http://fabriziomello.blogspot.com
>> Perfil Linkedin: http://br.linkedin.com/in/fabriziomello
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a