1

我已获得对 Oracle 数据库的访问权限,我正在尝试确定表中的给定列是否可以为空。我可以连接到 Oracle DB 并获取连接元数据。

4

1 回答 1

1

普通 SQL 解决方案(适用于各种数据库访问层)

要获取特定列:

SELECT NULLABLE 
FROM USER_TAB_COLUMNS 
WHERE TABLE_NAME = '<YOUR_TABLE_NAME>' 
AND COLUMN_NAME = '<YOUR_COLUMN_NAME>';

要获取表中的所有列:

SELECT COLUMN_NAME, NULLABLE 
FROM USER_TAB_COLUMNS 
WHERE TABLE_NAME = '<YOUR_TABLE_NAME>' ;

如果表在另一个模式中,你应该这样使用它:

SELECT COLUMN_NAME, NULLABLE 
FROM ALL_TAB_COLUMNS 
WHERE OWNER = '<OWNER_SCHEMA_NAME>' 
AND TABLE_NAME = '<YOUR_TABLE_NAME>';

(基于OTN 论坛上的帖子)

JDBC具体解决方案:

您可以使用DatabaseMetadata对象:

  • 通过调用获取表数据getColumns(null,null,'yourtablename','%',null)
  • 然后从结果集中,得到你需要的 'COLUMN_NAME' 列和 'NULLABLE'

(来自Herong Yang 博士:列出所有列 - getColumns()

或者您可以使用虚拟查询:Java2S: Is column nullable from ResultSetMetadata 我不喜欢这个,这不是一个干净的解决方案......

于 2012-10-11T13:09:53.477 回答