存储过程做表数据迁移

ladofwind 2009-12-04 05:41:02
A表字段a1,a2,a3,a4.
B表字段b1,b2,b3

现在要把A表的一条记录拆成两条插到B表里

也就是说

对每一条A表记录,实行
insert A(a1,a2,a4) into B(b1,b2,b3)
insert A(a1,a3,a4) into B(b1,b2,b3)

这个存储过程如何实现?

...全文
153 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
crazylaa 2009-12-04
  • 打赏
  • 举报
回复
create or replace procedure moveA2B
as
var_cur sys_refcursor;
var_rec A%ROWTYPE;
begin
open var_cur for select a1,a2,a3,a4 from A;
loop
fetch var_cur into var_rec;
exit when var_cur%NOTFOUND;

insert into B(b1,b2,b3) values (var_rec.a1,var_rec.a2,var_rec.a4);
insert into B(b1,b2,b3) values (var_rec.a1,var_rec.a3,var_rec.a4);
end loop;
close var_cur;
dbms_output.put_line('done!');
exception when others then
raise;
end;
ladofwind 2009-12-04
  • 打赏
  • 举报
回复
好的,因为很少写store procedure,上手有点慢,新任务要维护一大堆store procedure,
有几个例子就好多了,谢谢
lixinbill 2009-12-04
  • 打赏
  • 举报
回复
完整的存储过程代码 你自己补吧 要下班了 周末开心
没解决的话我明天或者周一把完整的存储过程发上来
希望明天不加班了 - -0
ladofwind 2009-12-04
  • 打赏
  • 举报
回复
嗯,你理解的没错
ladofwind 2009-12-04
  • 打赏
  • 举报
回复
感谢,我调试下,通了给分
lixinbill 2009-12-04
  • 打赏
  • 举报
回复

insert A(a1,a2,a4) into B(b1,b2,b3)
insert A(a1,a3,a4) into B(b1,b2,b3)

楼主 你的意思是把A表的每条记录的第1,2,4和 第1,3,4列分别插入到B表中吧。。
貌似我没理解错
lixinbill 2009-12-04
  • 打赏
  • 举报
回复
open mycursor for '
select a1,a2,a3,a4 from TABLE1
';
loop
fetch mycursor into col1, col2, col3, col4;--把游标中的数据存入变量,可以有多个变量
if mycursortest%found then --如果找到数据,找不到数据为notfound
insert into TABLE2
(b1,b2,b3
) values
(col1,col2,col4
);
insert into TABLE2
(b1,b2,b3
) values
(col1,col3,col4
);
else
dbms_output.put_line
(
'处理完毕'
)
;
exit;--退出循环
end if;
end loop;
close mycursortest;--关闭游标
lixinbill 2009-12-04
  • 打赏
  • 举报
回复
先占沙发

17,078

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧