假设我有一个复杂的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,但这似乎没有帮助,因为我不是想从现有的表中找到名字*。
*我无法实际创建此表,因此制作它然后运行普通查询不是一个选项。
您可以使用DBMS_SQL包的DESCRIBE_COLUMNS过程
以下是关键步骤:打开游标,解析并执行。最后调用qazxsw poi,它返回qazxsw poi中的定义
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);
作为替代方案,您可以使用JDBC 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
方法。