我正在使用 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 行为的综合文档。例如,对于所有 SQL 类型,具有 getPrecision/getScale 含义的巨大表会很棒。某处有这样的文档吗?