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:eenriq...@cav.desoft.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:jura...@gmail.com] Enviado el: Monday, January 11, 2010 7:22 PM Para: Yudelsy Castellón García CC: pgsql-es-ayuda@postgresql.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