RV: RV: RV: duda con funcion

From: Yudelsy Castellón García <yude(at)cav(dot)desoft(dot)cu>
To: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RV: RV: RV: duda con funcion
Date: 2010-01-12 16:14:23
Message-ID: 001501ca93a2$4e3bb000$eab31000$@desoft.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Esta forma no la puedo utilizar porque el numero de columnas a devolver en
la funcion es variable, por eso es que estoy tratando de devolver cursores.

Saludos,

Ing. Esneiker Enriquez Cabrera.
Excelencia en Software.
Desoft S.A. en Ciego de Ávila.
Joaquín de Agüero Esq. Calle 2. Ciego de Ávila. Cuba.
email:eenriquez(at)cav(dot)desoft(dot)cu
Teléfono: 53-33-266200

El 12/01/2010 8:11 AM, Yudelsy Castellón García escribió:

De: Julio Cesar Rodriguez Dominguez [mailto:jurasec(at)gmail(dot)com]
Enviado el: Monday, January 11, 2010 7:22 PM
Para: Yudelsy Castellón García
CC: pgsql-es-ayuda(at)postgresql(dot)org
Asunto: Re: [pgsql-es-ayuda] RV: duda con funcion

Esa solución funciona muy bien cuando la función no precisa de parámetros de
entrada, porque cuando hago lo siguiente:

CREATE FUNCTION eliminar(parametro character varying, refcursor) RETURNS
refcursor AS '
declare micursor refcursor;
BEGIN
OPEN micursor FOR SELECT * FROM nmusuario;
RETURN micursor;
END;
' LANGUAGE plpgsql;

-- BEGIN;
SELECT eliminar('probando','funccursor');
FETCH ALL IN funccursor;
-- COMMIT;

me da como error ERROR: cursor "funccursor" does not exist, la verdad es
que esto se hace muy simple en otros gestores de base de datos, no tengo
idea de por qué en postgres lo han complicado tanto.

Puedes utilizar el tipo de retorno setof record en lugar de refcursor:

CREATE OR REPLACE FUNCTION mi_funcioin(IN id int, OUT campo1 int, OUT campo2
text)
RETURNS SETOF record AS
$BODY$
declare
begin
return query SELECT campo10,campo20 FROM nmusuario where idUsuario =
id;
return;
end;
$BODY$
LANGUAGE 'plpgsql'

----
select * from mi_funcion( 5432 );

__________ Información de ESET NOD32 Antivirus, versión de la base de firmas
de virus 4755 (20100108) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com

__________ Información de ESET NOD32 Antivirus, versión de la base de firmas
de virus 4755 (20100108) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message gherzig 2010-01-12 16:21:00 RE: problema usando regexp_replace
Previous Message gherzig 2010-01-12 16:04:56 RE: problema usando regexp_replace