ResultSetMetaData.getScale não funciona  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
Rafael Rossignol
Java Ninja
[Avatar]

Membro desde: 17/02/2004 09:26:58
Mensagens: 259
Offline

Segundo a documentação ResultSetMetaData.getScale deveria retornar a quantidade de casas a direita da virgula.

No meu vem tudo 0, mas o campo é number(10,2)

estou usando oracle 8 e 10g

alguem ja teve esse problema?

"A Imaginação é mais importante que o Conhecimento"
Albert Einstein
[Email] [ICQ]
liberali
Debugger
[Avatar]
Membro desde: 12/01/2007 20:07:34
Mensagens: 52
Offline

Olá pessoal, esse é um post antigo, porém não foi respondido e tenho enfrendado este mesmo problema agora.
Alguem ja passou por isso ou sabe como resolver?

Preciso disso pois estou migrando um sistema e o BD (Oracle) ja esta montado. Os campos numericos tudo retornando NUMERIC pelo ResultSetMetaData, nada de INTEGER ou DECIMAL, entao preciso muito disso.

Valeu!
edercolin
Thread.start()
[Avatar]

Membro desde: 11/07/2006 10:40:30
Mensagens: 35
Offline

Estou tendo o mesmo problema, como vocês resolveram isso?!
edercolin
Thread.start()
[Avatar]

Membro desde: 11/07/2006 10:40:30
Mensagens: 35
Offline

descobri que isto esta ocorrendo pois meu select é um select com soma e group by "select sum(xxx) from aaa group by bbb;"

fazendo select simples da tabela ele funciona normalmente.....

alguem tem alguma ideia de solução?!
Mireille
Smalltalk

Membro desde: 02/04/2008 07:51:58
Mensagens: 3
Offline

Estou com o mesmo problema!! Buáá ninguém solucionou??
Vinicius_Sartori
JavaEvangelist
[Avatar]

Membro desde: 11/02/2008 10:08:39
Mensagens: 460
Offline

Não sei se ajuda mais eu traduzi apartir da documentação do java


Parametros
column - A primeira coluna é 1, A segunda é 2, ...
Returns:
scale
Throws:
SQLException - Retorna caso ocorra algum erro no banco de dados.

mais se poder postar o erro que o console retorna seria mais facil.


ハガネ グンダム
[Email] [MSN]
Mireille
Smalltalk

Membro desde: 02/04/2008 07:51:58
Mensagens: 3
Offline

Oi Vinicius,

Sim, a função do getScale seria retornar o número de casas decimais (após a vírgula), de forma que, se você passar um número inteiro, ele deve retornar 0 (não há casas decimais).

Porém, o problema que estamos tendo é que, se você fizer uma consulta no banco de dados cuja projeção retorne um campo de alguma tabela, beleza, o getScale funciona bonitinho!

Mas quando você retorna na projeção alguma coisa que não seja um campo - um SUM, por exemplo - o getScale sempre retorna 0, mesmo que haja casas decimais!

Exemplo: eu fiz um SUM dentro de uma SELECT e o resultado desta soma é, supomos, 47.92. se você der um getScale nesta coluna, ele retornará 0 Porém, se no meu SELECT eu retornar um campo de uma tabela qualquer que também tenha o mesmo valor, 47.92, o getScale funciona e retorna 2 corretamente!

Eu solucionei o problema da seguinte forma:

Eu recupero a coluna com um getBigDecimal, e utilizo o método scale() da classe java.math.BigDecimal. Ele nunca erra

Abraços!

This message was edited 1 time. Last update was at 30/05/2008 22:45:48

 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team