我在oracle中创建下表:

CREATE TABLE TEST
(
 DKEY INTEGER NOT NULL PRIMARY KEY,
 NOM VARCHAR2(255) NOT NULL
)


当我尝试使用此Java代码获取DKEY字段的类型时,得到以下结果:

DatabaseMetaData md = cnx.getMetaData();
ResultSet rsmd = md.getColumns(null, strSchema, strTableName, "%");
while (rsmd != null && rsmd.next()) {
    String strTmp = rsmd.getString("SQL_DATA_TYPE");  // this return 0 for field DKEY
    int intDType = rsmd.getInt("DATA_TYPE");          // this return 3 for field DKEY
    String strFType = rsmd.getString("TYPE_NAME")     // this return NUMBER for field DKEY
}


为什么我得到NUMBER而不是INTEGER?

最佳答案

尽管可以在SQL语句中将INTEGER指定为数据类型,但是Oracle将在其实现中使用NUMBER(38)

请参阅Oracle数据类型herethis文章。

10-05 21:27