【问题标题】:Is it possible to get column metatdata from an Oracle DB by using table_name.column_name text label?是否可以使用 table_name.column_name 文本标签从 Oracle DB 中获取列元数据?
【发布时间】:2012-10-11 12:58:07
【问题描述】:

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

【问题讨论】:

    标签: java oracle jdbc metadata


    【解决方案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 discussion Forum上的帖子)

    JDBC具体解决方案:

    你可以使用DatabaseMetadata对象:

    • 调用getColumns(null,null,'yourtablename','%',null)获取表格数据
    • 然后从结果集中,获取您需要的“COLUMN_NAME”列和“NULLABLE”

    (来自Dr. Herong Yang: Listing All Columns - getColumns()

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

    【讨论】:

    • 非常感谢您的快速答复。但在我看来,它的解决方法。无论如何,再次感谢你。
    • @AlexNNovak 我添加了一些 JDBC 特定信息,因为最后一句话告诉我你使用它。我第一次没注意到...
    • 感谢您的回答,我通过发送到 Orecle DB “select NULLABLE from user_tab_cols where table_name||'.'||column_name”的特定查询来解决这个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 2017-06-23
    • 2011-09-01
    相关资源
    最近更新 更多