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-25 19:57:28
Message-ID: CAHohBGuJ5w7HMUqZQy05__WcodaBcV-sJgj9t6DzC68YvgbF2Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola .. ya se aclaró el escenario..

Se estaba usando en el desarrollo una antigua librería hecha para procesar
SPs con sólo un cursor como salida ... por eso no les resultaba este nuevo
SP en esa librería.
Se modificará esa librería para esos proyectos (más antiguos)... para los
más nuevos usarán Laravel que por lo que me indicaron es más fácil dicho
manejo.

Gracias Anthony por la orientación.

Slds.
AP.

El 24 de septiembre de 2015, 18:46, Andrés P.P. <solopostgres(at)gmail(dot)com>
escribió:

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

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message jaime soler 2015-09-28 09:16:17 Re: AYUDA CARACTERISTICAS POSTGRES
Previous 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