如果返回的数据的数据类型是一样的,可以
select a.*,'a' t_type from tablea a
union all
select b.*,'b' t_type from tableb b
...这样将结果集返回后根据t_type字段来判断是哪个表中的数据.

解决方案 »

  1.   

    结构是一样的,但表的数量不一定可以用过程来做
    定义游标: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
    执行这个语句就行了。
      

  2.   

    忘了一点过程中不能返回数据集
    我上面的语句来自我一个动态创建视图的过程,你也可以照着做
    在加一句
    sqlstmt:='create view table_all as '||sqlstmt;select * from table_all就可以了。