Estranho, tente declarar reg da seguinte maneira:

reg        tb_estoque%ROWTYPE;

Deve funcionar agora!

Qual versão do postgresql você está utilizando?


saulo Mendes wrote:
 
peço disculpas pela insistência e falta de intendimento no assunto. é que sou novato no Postgres. eu utilizava firebird mas o mesmo não tem esses conceitos.
 
bom...para poder compilar eu fiz o seguinte:
 
-------------------------------------------------------------

CREATE OR REPLACE FUNCTION "public"."fn_estoque_produto3" (numeric) RETURNS SETOF "public"."tb_estoque" AS
$body$
declare
 reg record;
 vn_c_produto alias for $1;
begin
  for reg in  select c_estoque, d_estoque
      from tb_estoque loop
       RETURN NEXT reg;
  end loop;
end;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
 
-------------------------------------------------
 
mas ao executar houve o seguinte erro:
 
ERROR:  wrong record type supplied in RETURN NEXT
CONTEXT:  PL/pgSQL function "fn_estoque_produto3" line 6 at return next

 
 





Date: Fri, 19 Jan 2007 08:11:04 -0300
From: [EMAIL PROTECTED]
To: [email protected]
Subject: Re: [PostgreSQL-Brasil] returnar mais de uma linha em function

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


  



Obtenha o novo Windows Live Messenger! Experimente!

_______________________________________________ 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