2013/4/25 izaque Maciel <izaquemac...@gmail.com>

> Certo, mas pode me dar um exemplo, de como ficaria isso?
>

Pessoal cuidado com o top-posting.

Respondendo a pergunta, se você irá retornar apenas o valor de uma
variável, na assinatura da função utilize apenas "RETURNS numeric", ou
seja, retire o "SETOF". Mas lembre-se o tipo da variável deve ser do mesmo
tipo do RETURNS.

[]s
Danilo

>
>
> Em 25 de abril de 2013 08:54, Jean Domingues <ejdom...@yahoo.com.br>escreveu:
>
> Mas vc esta retornando um record onde deveria retornar numeric. E, se for
>> set of, retorne com return next (varios registros), senao, nao use setof,
>> use apenas numeric no tipo do retorno.
>>
>>   ------------------------------
>>  *De:* izaque Maciel <izaquemac...@gmail.com>
>> *Para:* Comunidade PostgreSQL Brasileira <
>> pgbr-geral@listas.postgresql.org.br>
>> *Enviadas:* Quinta-feira, 25 de Abril de 2013 8:11
>> *Assunto:* [pgbr-geral] Stored Procedure.
>>
>> Bom dia pessoal, não consegui concluir esta procedure pela questão do
>> retorno, que tem que me retornar todos os campos do "último select" abaixo,
>> e com o retorno deste último select, criarei outra stored procedure para
>> pegar o retorno dessa e trabalharei alguns cálculos. Peço a ajuda de vocês,
>> obrigado.
>>
>>
>> CREATE OR REPLACE FUNCTION public.retorna_valores_go (
>>   id_emolumento numeric(12,2),
>>   dt_calculo_emol date,
>>   valor_documento numeric(12,2)
>> )
>> RETURNS SETOF numeric AS
>> $body$
>> DECLARE
>>
>>   vidEmolumento numeric(12,2);
>>   vidVigencia numeric(12,2);
>>   vidEmolItens numeric(12,2);
>>   regEmolItens record;
>> BEGIN
>>
>>   -- Verifica se existe o emolumento
>>   select e.id into vidEmolumento
>>   from emolumentos e
>>   where e.id = id_emolumento;
>>
>>   -- Se encontrado, localiza a vigência
>>   if (videmolumento is not null) then
>>   begin
>>   select v.id into vidvigencia
>>     from vigencia v
>>     where dt_calculo_emol between v.dt_inicial and v.dt_final;
>>
>>     -- Se econtrada a vigência, localiza o emolumento pelo valor
>>     if (vidvigencia is not null) then
>>       select e.id into videmolitens
>>       from emolumentos_itens e
>>       where valor_documento between e.fx_valor_final and e.fx_valor_final;
>>     end if;
>>
>>     -- Se foi localizado o emolumento
>>     if (videmolitens is not null) then
>>       select e.id into videmolitens
>>       from emolumentos_itens e
>>        where e.id_emolumentos  = videmolumento and
>>             e.id_vigencia = vidvigencia and
>>             e.fx_valor_inicial = 0 and
>>             e.fx_valor_final   = 0;
>>     end if;
>>
>>     if (videmolitens is not null) then
>>     begin
>>       select e.id,
>>              e.id_emolumentos,
>>              e.fx_valor_inicial,
>>              e.fx_valor_final,
>>              e.valor_emolumento,
>>              e.tx_jud,
>>              e.fundesp,
>>              e.valor2,
>>              e.valor3,
>>              e.valor4,
>>              e.valor5,
>>              e.outras_despesas,
>>              e.pag_extra_inicio,
>>              e.valor_pag_extra,
>>              e.fundo_pag_extra,
>>              e.tx_jud_pag_extra,
>>              e.cod_tab_correg,
>>              e.cod_interno,
>>              e.calc_txjud,
>>              e.calc_fundesp,
>>              e.calc_valor2,
>>              e.calc_valor3,
>>              e.calc_valor4,
>>              e.calc_valor5,
>>              e.calc_pagina_extra into regEmolItens
>>   from emolumentos_itens e
>>       where valor_documento between e.fx_valor_final and e.fx_valor_final;
>>
>>       return regEmolItens;
>>     end;
>>     end if;
>>   end;
>>   end if;
>>
>>
>> END
>> $body$
>> LANGUAGE 'plpgsql'
>> VOLATILE
>> CALLED ON NULL INPUT
>> SECURITY INVOKER
>> COST 100;
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a