如何获取查询Oracle SQL返回的假设表的列名

时间:2019-03-25 19:29:02

标签: sql oracle

假设我有一个复杂的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,但这似乎无济于事,因为我没有尝试从现有表中查找名称*。

*我无法真正创建此表,因此无法使其创建然后运行普通查询。

1 个答案:

答案 0 :(得分:2)

您可以使用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()方法。