[PostgreSQL-Brasil] funcao
Rudinei Dias
rudinei em ipuc.com.br
Quinta Abril 26 14:04:30 UTC 2007
A linha
return exibem ;
está dentro do loop.
Quando o return executa, a função é finalizada, então o loop nunca
executará mais de uma vez.
Tire o return do loop.
Outra sugestão.
em vez de fazer a linha p = $1;
coloque no declare
p ALIAS FOR $1;
exemplo.
declare
r record;
i integer;
exibem varchar;
exibel varchar;
p ALIAS FOR $1;
begin
tatiane martins wrote:
> Ola,
>
> tenho a seguinte funcao
>
> CREATE OR REPLACE FUNCTION docduplicata(integer)
> RETURNS varchar AS
> $BODY$
> declare
> r record;
> i integer;
> exibem varchar;
> exibel varchar;
> p integer;
> begin
> p = $1;
> for r in
> select s.saida, s.chave_nf,
> (select count (s.saida) from saidas s left join
> movimentofinanceiro mf on s.saida = mf.saida where mf.centrocusto = 8
> and s.saida = $1) as qtdm,
> (select count (s.saida) from saidas s left join
> movimentofinanceiro mf on s.saida = mf.saida where mf.centrocusto =9
> and s.saida = $1) as qtdl
> from saidas s
> left join movimentofinanceiro mf on s.saida = mf.saida
> left join notasfiscais nf on s.chave_nf = nf.chave
> where mf.centrocusto in (8, 9) and s.saida = $1 loop
>
> i=1;
> for i in i .. r.qtdm loop
> exibem := r.chave_nf || ' - ' || i || ' / ' || r.qtdm ;
> return exibem ;
> end loop;
>
> end loop;
> end;
> $BODY$
> LANGUAGE 'plpgsql' VOLATILE;
>
> mas ela so passa uma vez pelo for, exibindo somente o valor dessa
> primeira passagem....
> o que estou fazendo errado?
>
> Obrigado
>
> __________________________________________________
> Fale com seus amigos de graça com o novo Yahoo! Messenger
> http://br.messenger.yahoo.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
Mais detalhes sobre a lista de discussão Brasil-Usuarios