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