oracle存储过程中查询动态表名
有34个表,每个表的表名格式为aa***bb,其中***是六位数字,从别的表中可以查到。现在想写个存储过程,目的就是想从这34个表中分别查询出来其中的两个字段的值,然后插...
有34个表,每个表的表名格式为aa***bb ,其中***是六位数字,从别的表中可以查到。
现在想写个存储过程,目的就是想从这34个表中分别查询出来其中的两个字段的值,然后插入到别的表中。 展开
现在想写个存储过程,目的就是想从这34个表中分别查询出来其中的两个字段的值,然后插入到别的表中。 展开
3个回答
展开全部
先建立结果表,也就是存放你最终结果的表
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;
我最终没测试,你自己测试一下,看哪有问题吧
更多追问追答
追问
我从别的表中查询到***在哪儿执行的? 怎么组装成一个新表名的呢?
追答
你从
user_tables 里查不到你的那些表名吗?
你把这句单独运行一下
select 'insert into test select col1,col2 from '||table_namecol1和col2给换一下
from user_tables where table_name like 'AA____BB';
万山数据
2024-11-14 广告
2024-11-14 广告
数据仓库处理是北京万山数据科技有限公司的核心业务之一。我们专注于高效、安全地处理大规模数据,通过先进的数据仓库技术,实现数据的集成、存储、管理和分析。我们的数据仓库解决方案能够支持复杂的数据查询和分析需求,提供实时的数据洞察,助力企业做出更...
点击进入详情页
本回答由万山数据提供
展开全部
EXECUTE IMMEDIATE sql_test;
sql_test为动态拼接的字符串
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你没描述清楚:从34个表中分别查询出来其中的两个字段的值?什么意思,你一次查询34个表?
更多追问追答
追问
执行34次查询,查询出来34组数据
追答
可是你所有表里面的字段名称都是一样的吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询