Gracias Anthony..

Yo en forma manual (psql) me funciona... pero al parecer en PHP no les ha
funcionado...Voy a insistirle al desarrollador en que valide bien la
estructura begin-end al momento de hacer los fetch..

Te cuento los resultados.

Slds.
AP.


El 24 de septiembre de 2015, 18:33, anthony <asotolo...@gmail.com> escribió:

> Hola Andrés, para poder acceder a los cursores que retorna una función
> debe ser dentro de la misma transacción, por eso como dice la doc
> http://www.postgresql.org/docs/9.4/interactive/plpgsql-cursors.html#PLPGSQL-CURSOR-USING
> debes ejecutar la llamada a la función y la extracción de los datos de los
> cursores dentro de una transaccion, asegurate que tu desarrollador esta
> ejecutando BEGIN;
> -- llamada a la función
> --obtención de datos del cursor1....cursorn
> COMMIT;
>
>
> por ejemplo:
> CREATE OR REPLACE FUNCTION devolver (  INOUT rc1 refcursor,INOUT rc2
> refcursor)  RETURNS record AS $body$
> DECLARE
> BEGIN
>   OPEN RC1 FOR
>    SELECT *
>    FROM pg_class;
>     OPEN RC2 FOR
>    SELECT *
>    FROM pg_language;
> END;
> $body$
> LANGUAGE PLPGSQL;
>
>
> BEGIN;
>
> SELECT * FROM devolver('c1', 'c2');
>
> FETCH ALL FROM c1;
> FETCH ALL FROM c2;
> COMMIT;
>
>
> saludos
>
> El 24/09/15 a las 13:34, Andrés P.P. escribió:
>
>
>> Estimados
>>
>> Tengo un Stored Procedure que es mas menos lo siguiente en cuanto a
>> definición...
>>
>> mi_procedimiento(param1 ..
>>                            param2...
>>                            cursor1 refcursor,
>>                            cursor2 refcursor,
>>                            .....
>>                            cursor5 refcursor) as $$
>> ...bla bla..
>>
>> donde cursor1, cursor2....cursor5 son 5 cursores de salida que tienen
>> distinta estructura y distintas fuentes de datos.....y dentro del SP se
>> alimentan de la forma:
>>
>> open cursor1 for select...bla bla...;
>>
>> open cursor2 for select...bla bla...
>>
>> Este SP lo debe ejecutar php y rescatar la salida de cursor1,
>> cursor2....cursor5...
>>
>> El desarrollador PHP me indica que NO ha podido encontrar la forma de
>> rescatar simultáneamente la data de los 5 cursores... por lo que se ve
>> obligado a ejecutar 5 veces el SP para ir rescatando la data cursor por
>> cursor.... lo que significaría que en vez de ejecutar  sólo 5 consulta se
>> ejecutarían 25 en las 5 pasadas......
>>
>> Alguien podría indicarme la forma o derivarme a un link en donde se
>> explique claramente como solucionar esto a nivel de php?...(o del SP).....
>> o no hay solución??.. y lo que debo hacer es descomponer el SP principal en
>> 5 SPs distintos??..
>>
>> Slds.
>> AP.
>>
>>
>

Responder a