Re: Problema con Cursor ??

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Ivan Alejandro Flores Correa <ifloresenator(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Problema con Cursor ??
Date: 2006-12-18 02:54:44
Message-ID: 20061218025444.GE7718@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Ivan Alejandro Flores Correa escribió:

> Bueno en realidad ese es el problema que en el PL original este
> Procedimiento me retorna tres cursores, y me los devuelve con el mensaje
> "<unnamed portal NN>", pero lo que busco yo era que me retornnara el cursor
> como lo hace el de Oracle, osea lo defino como cursor en el PL y en la
> aplicación lo recupero como este y el lo reconoce , pero aca al aparecer
> este paramerto no se como decirle en el PL que salga como cursor o Array de
> datos.

Si das preguntas completas, te podemos dar respuestas precisas. De lo
contrario solo podemos adivinar. Por eso simplifique tu funcion, dado
que no habia necesidad de la complejidad adicional.

En PL/pgSQL (y en Postgres en general) no hay ninguna forma de retornar
mas de un conjunto de resultados en una funcion. Por eso es que si
quieres retornar mas de un conjunto de resultados, lo que debes hacer es
abrirlos en cursores y luego retornar los cursores para que la
aplicacion haga FETCH.

Es decir, tu SP deberia retornar tres refcursor (es decir, referencias a
cursores abiertos), y luego la aplicacion debe hacer

FETCH ALL FROM "cursor_1"
FETCH ALL FROM "cursor_2"
FETCH ALL FROM "cursor_3"
(donde los nombres de los cursores son los que el SP te devolvio).

Ojo, que eso debe hacerse dentro de una sola transaccion, porque los
cursores se cerraran automaticamente al terminar la transaccion.

No hay ninguna otra forma de hacerlo. Lo que puedes hacer es encapsular
la forma de hacer eso en una especie de biblioteca, pero eso queda al
lado de la aplicacion y no en el cliente.

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message pablo 2006-12-18 05:46:17 Copiar a otra tabla pero con restriccciones
Previous Message Ivan Alejandro Flores Correa 2006-12-18 02:46:20 Re: Problema con Cursor ??