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