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
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a