ResultSetMetaData.getScale não funciona

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?

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!

Estou tendo o mesmo problema, como vocês resolveram isso?!

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?!

Estou com o mesmo problema!! Buáá ninguém solucionou?? :cry:

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

public int getScale(int column)
             throws SQLException

    //Pega o numero designado de digitos para a direita do ponto decimal.
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.

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! :smiley:

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 :frowning: 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 :smiley:

Abraços!