Helio Cássio Postado Janeiro 7, 2015 Denunciar Share Postado Janeiro 7, 2015 Bom Dia Gostaria de saber se tem como na função baixar converter o valor ate 999 bilhões, pois atualmente ele so converte ate 999 milhões CREATE OR REPLACE FUNCTION valor_extenso_f_teste(numeric) RETURNS text AS $BODY$ DECLARE moeda_sing text; moeda_plu text; milhao text; milhar text; unidade text; centavo text; compl_milhao text; compl_milhar text; compl_unidade text; resultado text; valor text; BEGIN IF $1 = 0 THEN return ''; END IF; --moeda corrente no singular e plural. moeda_sing := ' REAL'; moeda_plu := ' REAIS'; --formata o valor de acordo com a máscara 999999999.99 valor := replace(substr(to_char($1, '999999999D00'), 2), ' ', '0'); --usa a função valor_extenso_aux_f para obter quantos milhões. milhao := valor_extenso_aux_f(substr(valor,1,3)); IF (substr(valor,1,3)::integer > 1) THEN milhao := milhao || ' MILHOES'; ELSE IF (substr(valor,1,3)::integer = 1) THEN milhao := milhao || ' MILHAO'; END IF; END IF; --usa a função valor_extenso_aux_f para obter quantos mil. milhar := valor_extenso_aux_f(substr(valor,4,3)); IF (substr(valor,4,3)::int > 0) THEN IF substr(valor,4,3)::int = 1 THEN milhar := ' MIL'; ELSE milhar := milhar || ' MIL'; END IF; END IF; --usa a função valor_extenso_aux_f para obter quantas unidades. unidade := valor_extenso_aux_f(substr(valor,7,3)); IF (substr(valor,1,9)::integer = 1) THEN unidade := unidade || moeda_sing; ELSE unidade := unidade || moeda_plu; END IF; --usa a função valor_extenso_aux_f para obter quantos centavos centavo := valor_extenso_aux_f('0' || substr(valor,11,2)); IF (substr(valor,11,2)::integer > 1) THEN centavo := centavo || ' CENTAVOS'; ELSE IF (substr(valor,11,2)::integer = 1) THEN centavo := centavo || ' CENTAVO'; END IF; END IF; --verifica a necessidade de ',' após o milhão. IF length(trim(milhao))::integer <> 0 THEN compl_milhao := ' E '; ELSE compl_milhao := ''; END IF; --verifica a necessidade de , após o mil. IF length(ltrim(substr(valor,6,4),'0'))::int < 4 or length(trim(substr(valor,6,4),'0'))::int = 1 THEN compl_milhar := ' '; ELSE compl_milhar := ' E '; END IF; --verifica a necessidade de , após as unidades. IF length(trim(unidade))::integer <> 0 and length(trim(centavo))::integer <> 0 THEN compl_unidade := ' E '; ELSE compl_unidade := ''; END IF; resultado:= milhao || compl_milhao || milhar || compl_milhar || unidade || compl_unidade || centavo; return replace(resultado,' ',' '); END; $BODY$ Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Helio Cássio
Bom Dia
Gostaria de saber se tem como na função baixar converter o valor ate 999 bilhões, pois atualmente ele so converte ate 999 milhões
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.