Oracle SQL:如何获取任何给定查询的列/字段列表

时间:2014-07-26 13:34:30

标签: sql oracle

我需要知道任何给定查询的列列表,我们该怎么做?查询可以是......

select * from some_tab1  (should return all the column names in some_tab1)
select col1, col2, col3 from some_tab2  (should return col1, col2, col3)
select col1 as 1, col2 as 2 from some_tab3  (should return 1, 2)

我知道如何获取给定表的列列表,但有没有办法获取给定查询的列列表,无论是否存在数据?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

Oracle的DESCRIBE命令不支持该命令。我认为你可以得到的最接近的(没有编写自定义命令)是从高级宿主语言的查询中获取1条记录,然后迭代结果列,或者从查询中创建视图或临时表并描述那。后者将是这样的:

create table t$$desc as 
   select * from some_tab1  (should return all the column names in some_tab1)
   where 1 = 0
;

desc t$$desc

如果您使用JDBC或ADO或其他主机语言,则可以获取查询的“架构”。像DataReader这样的东西支持一个.GetSchema()方法,该方法返回一个描述结果集模式的对象。这里有一个示例:Get the schema for a table

答案 1 :(得分:1)

这可以用......完成。

dbms_sql.describe_columns3(dbms_sql.to_cursor_number(rc),count,tab);

其中rc是sql的引用游标。 count是输出参数,它返回列计数,tab是实际的输出集合。

感谢@Alex Poole和@a_horse_with_no_name