我需要知道任何给定查询的列列表,我们该怎么做?查询可以是......
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)
我知道如何获取给定表的列列表,但有没有办法获取给定查询的列列表,无论是否存在数据?
感谢您的帮助!
答案 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