Re: RV: duda con funcion

From: Julio Cesar Rodriguez Dominguez <jurasec(at)gmail(dot)com>
To: Yudelsy Castellón García <yude(at)cav(dot)desoft(dot)cu>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: RV: duda con funcion
Date: 2010-01-12 00:22:16
Message-ID: 925902881001111622i5b91ab1m4c0ba7662245a3d3@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message gherzig 2010-01-12 01:20:51 problema usando regexp_replace
Previous Message Yudelsy Castellón García 2010-01-11 22:09:20 RV: duda con funcion