Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cyber_jso

Problema com casas decimais

Recommended Posts

Olá pessoal!

Esou com um problema em um campo de uma tabela que é do tipo number (10,2). Valores maiores que zero ele grava normalmente, porém quando utilizo valores menores, por exemplo (0,50) ele grava (,00).

No momento do insert ou do update deste valor, faço o seguinte tratamento antes de enviar para o banco de dados replace(replace('[valor]','.',''),',','.').

Alguém sabe como devo fazer para evitar o problema que citei acima?

Desde já, agradeço a atenção de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

que lingua usa no oracle ?

que formato de numero ?

que linguagem usa para acessar o bd ?

 

replace(replace('[valor]','.',''),',','.')

 

tranforma um valor decimal latino num americano.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Existem alguns modos que você pode utilizar para contornar o problema, utilizando uma função SQL ou parametros do NLS do seu banco de dados, veja:

 

DWSP> create table rodrigo (a number(10,2));Table created.DWSP> insert into rodrigo values (100.5);1 row created.DWSP> insert into rodrigo values (-33.55);1 row created.DWSP> insert into rodrigo values (0.56);1 row created.DWSP> select to_char(a,'000.00') from rodrigo;TO_CHAR------- 100.50-033.55 000.56

Para tentar substituir seus REPLACES, basta mudar o NLS_TERROTORY para BRAZIL. Que irá realizar a função dos seus replaces, veja:

 

DWSP> select * from rodrigo;		 A----------	 100.5	-33.55	   .56DWSP> alter session set nls_territory = "BRAZIL";Session altered.DWSP> select * from rodrigo;		 A----------	 100,5	-33,55	   ,56

Se tiver mais dúvidas poste.

 

Abraços,

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.