Oracle:返回NUMBER的整数字段

时间:2013-05-30 14:46:43

标签: java oracle sqldatatypes

我在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?

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

我认为表格列DKEY属性类型是NUMBER

但是试试

while (rsmd != null && rsmd.next()) {
    String strTmp = rsmd.getString("SQL_DATA_TYPE");  // this return 0 for field DKEY
    int intDType = Integer.parseInt(rsmd.getLong("DATA_TYPE"));          // this return 3 for field DKEY
    String strFType = rsmd.getString("TYPE_NAME")     // this return NUMBER for field DKEY
}