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

_______________________________________________
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