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.



-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a