如果有一个查询返回表名,是否可以评估这个名称并在后续查询中使用它?
例如:
select count(1) from x where x in
(select table_name from ALL_TABLES where table_name like 'MY_TABLE_%');
显然,这是无效的语法,但它应该说明我想要做什么。
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_%'
尝试使用类似以下的内容
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;
并将其纳入你的循环中
ALL_TABLES.NUM_ROWS
。 - Mike Parkall_tables.num_rows
会被填充,因此如果您只想要一个合理的估计值,它可能会很有用。 - Jeffrey Kemp