From: | Andrés P(dot)P(dot) <solopostgres(at)gmail(dot)com> |
---|---|
To: | anthony <asotolongo(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: SP con varias salidas cursores.... php |
Date: | 2015-09-24 21:46:23 |
Message-ID: | CAHohBGvcnaH5swSHat2KW5saiheJu1c73-i4QqfNkqvunkeFpA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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 <asotolongo(at)gmail(dot)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.
>>
>>
>
From | Date | Subject | |
---|---|---|---|
Next Message | mauricio pullabuestan | 2015-09-25 13:38:45 | Re: Error "temporary" is not a known variable. al crear funcion con Select * INTO TEMPORARY tarifa_rs From t |
Previous Message | Gerardo Herzig | 2015-09-24 21:39:27 | Re: Borrado de una tabla |