如何从另一个查询返回的表名中执行选择?

时间:2017-07-20 12:57:29

标签: sql oracle

我有一个返回我需要的表名的查询,例如

execute immediate 'select value from '|| select listagg(table_name, ', ') within group (order by table_name) from all_tables where table_name like 'test_table%';

如何根据查询结果收到所有这些表的选择?我尝试连接它们并使用“立即执行”,但我无法使它工作。

我试过了:

.sidebar-nav{
     position: fixed; //Center works but then my navbar is not fixed anymore!
     width: 100%;
     z-index: 1;
}
#filler {
  display: block;
  height: 50px;
}

2 个答案:

答案 0 :(得分:3)

这是执行"选择计数(*)"的一个小例子。在查询返回的表列表中:

select
TRUNC(SYSDATE) AS COUNT_DATE,
table_name,
to_number(
extractvalue(
xmltype(
dbms_xmlgen.getxml('select count(*) c from '||owner||'.'||table_name))
,'/ROWSET/ROW/C')) as count
from
all_tables where rownum < 3
order by
table_name

dbms_xmlgen.getxml允许您执行动态创建的查询并将结果作为XML返回,您可以使用extractvalue从中提取值。当您要发出的查询返回单行时有用。

此致

答案 1 :(得分:0)

您可以执行以下操作:

select 'select * from '||owner||'.'||table_name||';'
from   all_tables
where  lower(table_name) like '%test_table%';

然后复制并粘贴结果并以脚本或根据您的需要单独运行语句。