Oracle:select * from(select table_name from ...)?

时间:2011-03-30 23:29:40

标签: sql oracle

给定一个返回表名的查询,是否可以评估名称并在后续查询中使用它?

E.G。

select count(1) from x where x in 
    (select table_name from ALL_TABLES where table_name like 'MY_TABLE_%');

显然这是无效的语法,但它应该说明我正在尝试做什么。

2 个答案:

答案 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;

并将其纳入你的循环