如果返回的数据的数据类型是一样的,可以
select a.*,'a' t_type from tablea a
union all
select b.*,'b' t_type from tableb b
...这样将结果集返回后根据t_type字段来判断是哪个表中的数据.
select a.*,'a' t_type from tablea a
union all
select b.*,'b' t_type from tableb b
...这样将结果集返回后根据t_type字段来判断是哪个表中的数据.
定义游标:cursor c_cur2 is select table_name from all_tables where table_name like 'TABLE%' ;
然后
open c_cur2;
loop
fetch c_cur2 into tabname2;
exit when c_cur2%notfound;
sqlstmt0:=' select * from '||tabname2||' union all ';
--动态生成sql临时语句sqlstmt0
sqlstmt:=sqlstmt||sqlstmt0;
--把sql临时语句并入sqlstmt
end loop;
close c_cur2; qlstmt:=substr(sqlstmt,1,length(sqlstmt)-10);
--去掉最后一个union all
执行这个语句就行了。
我上面的语句来自我一个动态创建视图的过程,你也可以照着做
在加一句
sqlstmt:='create view table_all as '||sqlstmt;select * from table_all就可以了。