Я использую тонкий драйвер Oracle JDBC (10.2.0.3) для подключения к базе данных Oracle 10g. Я хотел бы получить информацию о столбцах базы данных, поэтому я использую ResultSetMetaData . Наиболее важная информация, которая мне нужна, - это тип столбца и его длина, поэтому я использую методы getColumnType , getPrecision и getScale .
Работает для простого запроса (select * from tablename
), если тип столбца «простой», например VARCHAR2(50), NUMBER(5), NUMBER(6,2)
. Если у меня есть более сложный запрос (select count(*) from tablename
) или запрос, основанный на представлении, которое содержит некоторые сложные вычисления, методы дают странные результаты, такие как:
getScale
: -127
- и
getPrecision
, и getScale
- это 0
getPrecision
: -1
Установка свойства соединения oracle.jdbc.J2EE13Compliant
на true
(как предложено несколькими веб-страницами) исключает getScale = -127, но все равно возвращает результат 0/0.
Скорее всего, мне нужно создать обходной путь для этих странных результатов, но сначала мне нужна как минимум исчерпывающая документация о поведении Oracle ResultSetMetaData. Например, огромная таблица со значением getPrecision / getScale для всех типов SQL была бы отличной. Где-нибудь есть такая документация?