Tag:

Oracle ResultSetMetaData getPrecision / getScale

我使用Oracle的JDBC瘦驱动程序(10.2.0.3)连接到Oracle 10g数据库。 我想获得有关数据库列的信息,因此我使用ResultSetMetaData 。 我需要的最重要的信息是列的类型和长度,所以我使用getColumnType , getPrecision和getScale方法。 如果列类型为“简单”,如VARCHAR2(50), NUMBER(5), NUMBER(6,2)它适用于简单查询( 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含义的巨大表将是很棒的。 某处有这样的文档吗?