Bom dia,

Para fazer retornar mais de uma linha você deve fazer com que sua function retorne um tipo especifico.
Você deve fazer o seguinte.

CREATE OR REPLACE FUNCTION "public"."fn_estoque_produto" (numeric, out numeric, out varchar,
out numeric) RETURNS SETOF tb_estoque AS
$body$
declare
	reg record;
begin
	 for reg in  select c_estoque, d_estoque from tb_estoque loop
		RETURN NEXT reg;
	 end loop;

Return null;
end;
$body$
LANGUAGE 'plpgsql' 

No trecho RETURNS SETOF ..... você pode usar uma tabela, view ou criar um Type especifico para sua function ;)
Você pode alterar o valor qq campo de que será retorna, para isso basta fazer reg.campo = valor

Espero que consiga, qualquer duvida posta novamente

Att

Evandro

saulo Mendes wrote:
amigo rodrigo, agradeço a dica mas eu já tinha lido esse artigo(em português) mas, infelizmente, não consegui resolver.

se alguém tiver algo, um pouco mais detalhado eu agradeço.


________________________________
  
Date: Thu, 18 Jan 2007 20:52:45 -0200
From: [EMAIL PROTECTED]
To: [email protected]
Subject: Re: [PostgreSQL-Brasil] returnar mais de uma linha em function

RTFM [1]. :)
[1] http://www.postgresql.org/docs/8.2/interactive/plpgsql-control-structures.html#PLPGSQL-STATEMENTS-RETURNING
--
Rodrigo Hjort
http://icewall.org/~hjort
2007/1/18, saulo Mendes <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> >:
Senhores, eu tenho a seguinte function
---------------------------------------------------------------------------------------------------------------------------------------
CREATE OR REPLACE FUNCTION "public"."fn_estoque_produto" (numeric, out numeric, out varchar,
out numeric) RETURNS "pg_catalog"."record" AS
$body$
declare
 reg record;
 vn_c_produto ALIAS FOR $1;
 vn_c_estoque ALIAS FOR $2;
 vt_d_estoque ALIAS FOR $3;
 vr_saldo ALIAS FOR $4;
begin
 for reg in
  select c_estoque, d_estoque from tb_estoque loop
   vt_d_estoque = reg.d_estoque;
   vn_c_estoque = reg.c_estoque;
   vr_saldo = (select fn_saldo_produto(vn_c_produto,reg.c_estoque));
   end loop;
end;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
o problema é que essa função só me retorna uma linha e eu preciso, justamente, que a função me retorne todos os registros da tb_estoque.
agradeço a quem puder me ajudar nessa função.
    

_________________________________________________________________
Busque em qualquer página da Web com alta proteção. Obtenha o Windows Live Toolbar GRATUITO ainda hoje!
http://toolbar.live.com/
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios


  

_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios

Responder a