2016-01-19 1 views
0

У меня возник вопрос относительно более новых версий драйверов Oracle jdbc. При создании таблицы у вас есть возможность определить ее тип данных столбца как NUMBER, который по существу является значением с плавающей запятой?Есть ли какое-либо значение со значениями по умолчанию для типа данных NUMBER метаданных базы данных Oracle?

Если это так, то почему метаданные (с новыми драйверами) возвращение в -127 для DECIMAL_DIGITS и 0 как COLUMN_SIZE (через беличьих по крайней мере): Default returned values for a NUMBER column

ли эти значения означают что-нибудь или я могу предположим, что они на самом деле DECIMAL_DIGITS 127 и COLUMN_SIZE 38 (максимальные значения допустимы в типе NUMBER https://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements001.htm) или есть некоторые причины, почему значения заданы так? Я не мог найти документацию о том, почему или когда это изменение было внесено в драйвер jdbc от Oracle.

Если это так или иначе, то проблема, с которой я столкнулась, заключается в том, что после извлечения метаданных из базы данных я хотел бы сохранить данные с помощью xtext eclipse, и он подбрасывает соответствие, когда значения отрицательны. Я очень новичок в xtext и не уверен, что это настраивается или работает по назначению.

+0

Какова версия вашего драйвера JDBC? – wero

+0

@wero моя версия драйвера JDBC - 11.2.0.4.0 (в соответствии с манифестом водителя.mf). Я считаю его самым новым с их сайта. – wmgeiger101x

ответ

0

Это, кажется, проблема с драйвером.

JDBC обновления драйвера от 11.2.0.2 до 11.2.0.4 stated, что он зафиксировал аналогичный вопрос для целых чисел:

12775220 DatabaseMetaData.getColumns() возвращает неожиданные значения в COLUMN_SIZE и DECIMAL_DIGITS для INTEGER колонн

Однако проблема все еще существует. Вот найденное решение Рода Аллена на oracle forums:

Добавьте аргумент JVM -Doracle.jdbc.J2EE13Compliant=true.

Возможно, это также решает проблему с NUMBER. Else Я бы рекомендовал подать отчет об ошибке.

Update:

Испытано гипотезу и исправление с помощью аргумента JVM работает на моей машине. Поле NUMBER теперь имеет COLUMN_SIZE 38 и DECIMAL_DIGITS 0. Поля, определенные как NUMBER (n, m), не страдают от проблемы с аргументом JVM или без него.

+0

@ wmgeiger101x, похоже, работает, чтобы проверить начальную белку с аргументом JVM. – wero

+0

, так что это просто правильная работа? Ошибка в текущем драйвере для типа данных NUMBER? – wmgeiger101x

Смежные вопросы