Ruiz 0 Denunciar post Postado Setembro 30, 2008 Preciso conevrter um char para um numerico com 16 casas decimais. Tentei o seguinte: SQL> select to_number('521.323231251415121','9999.9999999999999999) from dual; TO_NUMBER('521.323231251415121','9999.9000000000000000') -------------------------------------------------------- 521.323231 Mas ele retorna 6 casas decimais somente. Tem outro jeito de formatar? Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 30, 2008 Ruiz a precisão no NUMBER é maior que isto , creio que o problema está no formato de saída , dá uma olhada no help, talvez ajude. http://download.oracle.com/docs/cd/B10501_...nts2a.htm#45723 http://download.oracle.com/docs/cd/B10501_...nts4a.htm#34579 Compartilhar este post Link para o post Compartilhar em outros sites
Ruiz 0 Denunciar post Postado Setembro 30, 2008 Motta, deu uma olhada na documentação mas o meu problema teva sendo formatar a coluna usando o dual. Eu fiz um programinha só pra testar a função to_number, e funcionou: set feedback on set serveroutput on declare v_teste float(126); begin v_teste:= to_number('450.987654321987654321987654321987','9999.999999999999999999999999999999'); dbms_output.put_line ('===================' ); dbms_output.put_line ('o valor total é ' || v_teste ); dbms_output.put_line ('===================' ); end; / Como eu vou ler um campo do tipo varchar2 em tempo de processamento, vou fazer isso, criar uma variável temporária do tipo float, e antes de utilizar o dado, vou aplicar o to_number, assim já armazeno na variável float com a precisão que necessitava. Valeu! Compartilhar este post Link para o post Compartilhar em outros sites