ResultSetMetaData getScale возвращает 0 - PullRequest
0 голосов
/ 18 марта 2011

У меня есть таблица с именем RATE_HISTORY с полем с именем RATE.
Поле RATE имеет шкалу 18.
Я использую ResultsetMetaData для получения метаданных столбцов в этой таблицев Oracle 11.2.
я выполняю следующий запрос в своем коде:

select (RATE * 100) from RATE_HISTORY

Когда я делаю metadata.getScale(), он возвращает 0. Однако, если я выполню этот запрос:

select RATE from RATE_HISTORY

getScale возвращает правильное значение (18).
Есть ли способ умножить два числа в Oracle и сохранить шкалу?

Ответы [ 2 ]

2 голосов
/ 18 марта 2011

Я подозреваю, что это происходит потому, что масштаб является артефактом столбца таблицы, а не самими данными.Когда вы выводите значение из значения столбца, вы теряете эти метаданные.

Как насчет использования

select RATE, (RATE * 100) from RATE_HISTORY

Вы можете получить масштаб из первого столбца, вычисление из второго.

Или, конечно, просто умножить в java.

0 голосов
/ 18 марта 2011

Приведение результата в выборку также должно работать, недостатком является то, что вы должны повторить шкалу из определения столбца:

select cast(RATE * 100 as number(30, 18)) from RATE_HISTORY
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...