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

Syn*_*sso 4 sql oracle

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

例如

select count(1) from x where x in 
    (select table_name from ALL_TABLES where table_name like 'MY_TABLE_%');
Run Code Online (Sandbox Code Playgroud)

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

Jus*_*ave 6

您可以,但它需要您使用XML查询.

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_%'
Run Code Online (Sandbox Code Playgroud)