在我的 Oracle 19c 环境中,JDBC 驱动程序返回
java.sql.Types.NUMERIC
作为创建为 INTEGER 的列的列类型。 JDBC 元数据指示精度为 38,小数位数为 0。
检查
precision == 38
和 scale == 0
是检测列是否可能创建为 INTEGER 的唯一方法吗?
(使用标准 JDBC 元数据,无特定于供应商的 JDBC 元数据扩展)
没有单独的
INTEGER
数据类型。 INTEGER
是 NUMERIC(38)
的别名
这记录在 SQL 数据类型文档中:
表 6-2 转换为 Oracle 数据类型的 ANSI 数据类型
ANSI SQL 数据类型 Oracle 数据类型 INTEGER
INT
SMALLINT
NUMBER(38)
因此,如果您将列设置为 ANSI 数据类型
INTEGER
那么 Oracle 在幕后实际上会将该列设置为 NUMBER(38)
。