Bom dia Mateus, essa stored procedure posso até melhorar ela, é a primeira
que faço no PostgreSQL, no entanto realmente necessito que seja procedure
no banco de dados, porque há modificações frequentes, no cálculo de
valores, e não dá pra ficar modificando no fonte, e outra coisa é que vou
utilizar esta ai em outras procedures. Está meio confusa mas é só um
esboço, to convertendo de uma pronta no firebird, ai depois verei outras
questões como performance.


Em 26 de abril de 2013 09:05, Marcelo da Silva <[email protected]> escreveu:

> Sobre o TopPost, no IG (email), ele sempre abre a resposta abaixo to
> conteudo, mas ao enviar ele mostra acima.
> Como voces fazem editam o conteudo existente abrindo linhas a cada
> sub-tópico ?
> Qual cliente de email voces usam ?
>
>
> Em 26 de abril de 2013 08:02, izaque Maciel <[email protected]>escreveu:
>
> Bem, eu não irei retornar o valor somente de uma variável, mas de todo um
>> select, no caso o último select da procedure, que há campos varchar e
>> numerics. A partir do retorno desta procedure atual, criarei outra que
>> receberá os valores desta. Como que fica, o "SETOF" e "return next" como já
>> mencionado anteriormente pelo colega Jean?
>> Obrigado.
>>
>>
>> Em 25 de abril de 2013 22:52, Danilo Silva 
>> <[email protected]>escreveu:
>>
>>> 2013/4/25 izaque Maciel <[email protected]>
>>>
>>>> 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 
>>>> <[email protected]>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 <[email protected]>
>>>>> *Para:* Comunidade PostgreSQL Brasileira <
>>>>> [email protected]>
>>>>> *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
>>>>> [email protected]
>>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> pgbr-geral mailing list
>>>>> [email protected]
>>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> pgbr-geral mailing list
>>>> [email protected]
>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>
>>>>
>>>
>>> _______________________________________________
>>> pgbr-geral mailing list
>>> [email protected]
>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>
>>>
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
>
> --
> Marcelo Silva
> ----------------------------------------------------------------
> Desenvolvedor Delphi / PHP
> My Postgres database
> Cel.: (11) 99693-4251
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a