我在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数据类型here和this文章。