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
