SELECT valor com duas casas decimais direto do Oracle  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
PadrE
JavaEvangelist
[Avatar]

Membro desde: 03/04/2006 00:01:40
Mensagens: 410
Offline

Olá pessoal,


É o seguinte... estou dando manutenção em uma aplicação que está com problema de casas decimais ao preencher um arquivo de exportação.
O que acontece é que no código tem um SELECT que lê diversos campos do tipo NUMBER no Oracle mas não faz a conversão deles no código, ou seja, não tem o NumberFormat + Locale antes de escrever o valor no arquivo.

A primeira solução seria colocar o Format nesses campos, mas é que não tenho acesso ao fonte mais atual do programa e nem o pessoal que estou ajudando possui isso. Me disseram ser um programa antigo e começou a ocorrer isso depois que mudaram de servidor.

Bom... olhando o servidor percebi que é um linux e está apenas com o idioma inglês. Como isso não ocorria antes, acredito ser uma configuração de algum parameter do Oracle mesmo, onde posso setar para ela me retornar o valor com duas casas decimais. Como tentativa instalamos o idioma português no Linux, mas o Oracle manteve a configuração de instalação.

Alguém saberia me dizer qual parâmetro seria esse ou se é alguma outra configuração no Oracle10g?

(escrevendo esse post me surgiu a idéia de mexer nas configurações regionais do sistema, logo mais posto o que ocorreu)


Vlw!

PadrecO
"O conhecimento o libertará !"
PadrE
JavaEvangelist
[Avatar]

Membro desde: 03/04/2006 00:01:40
Mensagens: 410
Offline

(tentando não deixar o post morrer)
Fiz alguns testes em relação as configurações regionais e não tive sucesso...

Em desespero usei o seguinte código para salvar os valroes no campo NUMBER do banco:

TO_CHAR(valor, '999999990D99')

Se eu ler esse mesmo valor da mesma forma consigo as duas casas decimais... mas se fazer um select sem qualquer formatação continuo tendo apenas uma casa, o que me gera os erros.

Ainda tenho algumas idéias em mente que vou tentar...

PadrecO
"O conhecimento o libertará !"
PadrE
JavaEvangelist
[Avatar]

Membro desde: 03/04/2006 00:01:40
Mensagens: 410
Offline

Pessoal,


Não achei uma solução direto pelo banco para me retornar os valores com duas casas. A solução foi modificar o código fonte para tratar os valores retornardos usando FormatNumber e Locale (depois de muito sacríficio para conseguir esse fonte).


vlw

PadrecO
"O conhecimento o libertará !"
Nirvana
Smalltalk

Membro desde: 30/03/2011 12:43:35
Mensagens: 1
Offline

Brother,

Tenta assim:

SELECT CAST(88 AS NUMBER(6,2)) FROM DUAL;
PadrE
JavaEvangelist
[Avatar]

Membro desde: 03/04/2006 00:01:40
Mensagens: 410
Offline

Opa..

Cara.. vlw a dica.. vou testar essa sua idéia mais para conhecimento mesmo... porque não vai rolar pedir pros caras mexerem nisso, ainda mais depois de ter resolvido com o uso do locale e format....

Se der certo com esse cast, vou ter mais uma forma de ajudar nas manutenções... que é o que tenho feito e muito ultimamente.. tô me sentindo um bombeiro... ^^

Abrs

PadrecO
"O conhecimento o libertará !"
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team