oracle存储过程中查询动态表名

2025-02-23 17:40:36
推荐回答(3个)
回答1:

先建立结果表,也就是存放你最终结果的表

 create table test
(a varchar2(100),
b varchar2(100));

然后建立存储过程

create procedure p_insert
as
cursor cur_tbname is 
select 'insert into test select col1,col2 from '||table_name 
from user_tables where table_name like 'AA____BB';--这个位置的表名必须大写的A和B,col1和col2换成你实际的字段名称
begin
 open cur_tbname;
      loop
 fetch cur_tbname into v_sql;
 exit when cur_tbname%notfound;
        execute immediate v_sql;
 commit;
      end loop;
end;

 

我最终没测试,你自己测试一下,看哪有问题吧

回答2:

EXECUTE IMMEDIATE sql_test;
sql_test为动态拼接的字符串

回答3:

你没描述清楚:从34个表中分别查询出来其中的两个字段的值?什么意思,你一次查询34个表?