给定一个返回表名的查询,是否可以评估名称并在后续查询中使用它?
E.G。
select count(1) from x where x in
(select table_name from ALL_TABLES where table_name like 'MY_TABLE_%');
显然这是无效的语法,但它应该说明我正在尝试做什么。
答案 0 :(得分:6)
你可以,但它要求你诉诸XML query。
select
table_name,
to_number(
extractvalue(
xmltype(
dbms_xmlgen.getxml('select count(*) c ' ||
' from '||owner||'.'||table_name))
,'/ROWSET/ROW/C')) count
from all_tables
where table_name like 'MY_TABLE_%'
答案 1 :(得分:3)
尝试使用类似
的内容select table_name
into table_name_value
from ALL_TABLES where table_name like 'MY_TABLE_%');
execute immediate 'select count(1) from ' || table_name_value into returned_value;
并将其纳入你的循环