From: | anthony <asotolongo(at)gmail(dot)com> |
---|---|
To: | Andrés P(dot)P(dot) <solopostgres(at)gmail(dot)com>, pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: SP con varias salidas cursores.... php |
Date: | 2015-09-24 21:33:38 |
Message-ID: | 56046C32.5070506@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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(at)postgresql(dot)org)
Para cambiar tu suscripcin:
http://www.postgresql.org/mailpref/pgsql-es-ayuda
From | Date | Subject | |
---|---|---|---|
Next Message | Gerardo Herzig | 2015-09-24 21:39:27 | Re: Borrado de una tabla |
Previous Message | Andrés P.P. | 2015-09-24 16:34:27 | SP con varias salidas cursores.... php |