Re: SP con varias salidas cursores.... php

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.
>>
>>
>

In response to

Responses

Browse pgsql-es-ayuda by date

  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