【发布时间】:2020-09-14 23:23:35
【问题描述】:
无需详述 - 我们用于性能测试的工具,它会吐出几个表(每次新运行都会更改名称),其中包含不同类型的数据。一个表包含所有表名和数据类型的列表。
我将使用 oracle 表作为示例,以便于解释。
我想做的事……
查询 all_table 如下: 查询A:
select table_name from all_tables where table_name like 'HZ_CUST_%'
Result will say: Table_name = 'HZ_CUST_ACCOUNTS'
使用 QueryA 结果进行查询,例如:
Select * from [QUERYA_RESULT] WHERE creation_date > sysdate, account_number between '500000' and '599999'
我得到了类似的东西,但不太确定该怎么做。
declare variable TABLE_NAME CHAR(10);
SELECT TABLE_NAME into :V_NAME from all_tables WHERE TABLE_NAME LIKE 'HZ_CUST_ACCOUNTS';
select *
from :V_NAME;
感谢您的帮助。
【问题讨论】:
-
参数不能用于表名和列名。您唯一的选择是动态 SQL - 使用
execute immediate。 -
对不起,我不熟悉动态 sql,我该怎么做呢?
-
你打算如何处理
select * from :v_name的结果?如果您只是要在SQL*Plus脚本中将其打印出来,您可以使用动态 SQL 打开一个游标,然后打印该游标。但是,如果您真的打算对结果做某事,则方法需要改变 -
您可以使用多态表函数 (PTF)。官方文档和 livesql.oracle.com 上有很多示例。另一种选择:使用 xmltable 或 dbms_xmlgen。如果你愿意,我明天可以提供示例
-
@SayanMalakshinov 那太好了!如果我能举个例子。谢谢!
标签: sql oracle variables oracle-sqldeveloper