【问题标题】:How to get column names of a hypothetical table returned by a query oracle sql如何获取查询oracle sql返回的假设表的列名
【发布时间】:2019-08-16 03:03:06
【问题描述】:

假设我有一个复杂的 SQL 查询,比如

select *
from mydbadmin.tablename
inner join mydbadmin.othertablename
on mydbadmin.tablename.id = mydbadmin.othertablename.id
where mydbadmin.tablename.y = 2

我可以进行什么查询来获取运行此查询将返回的表的标题?

注意事项:

我检查了Oracle query to fetch column names,但这似乎没有帮助,因为我没有尝试从现有表中查找名称*。

*我没有能力实际创建这个表,所以创建它然后运行普通查询不是一个选项。

【问题讨论】:

标签: sql oracle


【解决方案1】:

您可以使用 DBMS_SQL 包的DESCRIBE_COLUMNS 过程

以下是关键步骤:打开游标,解析并执行。最后调用describe_columns,返回DBMS_SQL.DESC_TAB中的定义

  c := DBMS_SQL.OPEN_CURSOR;

  DBMS_SQL.PARSE(c, q'[SELECT 'x' col1, sysdate col2, 1 col3 FROM dual]', DBMS_SQL.NATIVE);

  d := DBMS_SQL.EXECUTE(c);

  DBMS_SQL.DESCRIBE_COLUMNS(c, col_cnt, rec_tab);

上述查询的第一列的示例输出是

col_type            =    96
col_maxlen          =    1
col_name            =    COL1
col_name_len        =    4
col_schema_name     =    
col_schema_name_len =    0
col_precision       =    0
col_scale           =    0
col_null_ok         =    true

完整示例见Oracle Documentation

您也可以使用 JDBC resultSet.getMetaData() 方法。

【讨论】:

    猜你喜欢
    • 2021-12-26
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    • 2019-05-10
    • 2012-02-03
    • 2019-09-26
    相关资源
    最近更新 更多