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

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

In response to

Responses

Browse pgsql-es-ayuda by date

  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