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 NEXTCONTEXT: PL/pgSQL function
"fn_estoque_produto3" line 6 at return next
Date: Fri, 19 Jan 2007 08:11:04 -0300From: [EMAIL PROTECTED]: [EMAIL
PROTECTED]: 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 = valorEspero que
consiga, qualquer duvida posta novamenteAttEvandrosaulo 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!
http://get.live.com/messenger/overview_______________________________________________
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