oracle存储过程

认真做事开心做人 发布于 2017/08/16 20:35
阅读 140
收藏 0

现有3张表
数据结构
表A:ausercode,aname,apwd,amobile;
表B:busercode,  bname,bpwd;
表C:cusercode,cmobile;
usercode=工号
需要实现的效果
1、每天将B表的用户数据更新到A表(规则:存在则update,不存在则insert)
2、每天将C表的用户手机号更新到A表的相同用户下

实现方式为job+存储过程,应该是写成2个。
请问如何实现?在此跪拜大神!!

加载中
0
y
yangqing_
delete from a;

insert into a(ausercode,aname,apwd,amobile)
select b.busercode,b.bname,b.bpwd,c.cmobile from b
left join c on b.busercode = c.cusercode;

 

0
开源中国马桶盖
开源中国马桶盖

全表操作的话 数据量大的时候问题多多,但是 又是最简单的做法,如果 没有特殊要求 楼上的说法可行

0
认真做事开心做人

引用来自“yangqing_”的评论

delete from a;

insert into a(ausercode,aname,apwd,amobile)
select b.busercode,b.bname,b.bpwd,c.cmobile from b
left join c on b.busercode = c.cusercode;

 

数据量不是很大,50000条,但是有些特殊要求:如果c表手机号为空,则不更新,同时c表有重复数据即usercode可能重复。不能删除a表数据,只能更新或新增

0
认真做事开心做人

引用来自“gs586169”的评论

全表操作的话 数据量大的时候问题多多,但是 又是最简单的做法,如果 没有特殊要求 楼上的说法可行

数据量不是很大,50000条,但是有些特殊要求:如果c表手机号为空,则不更新,同时c表有重复数据即usercode可能重复。不能删除a表数据,只能更新或新增

0
开源中国马桶盖
开源中国马桶盖

引用来自“认真做事开心做人”的评论

引用来自“gs586169”的评论

全表操作的话 数据量大的时候问题多多,但是 又是最简单的做法,如果 没有特殊要求 楼上的说法可行

数据量不是很大,50000条,但是有些特殊要求:如果c表手机号为空,则不更新,同时c表有重复数据即usercode可能重复。不能删除a表数据,只能更新或新增

其实 你想灵活控制的话, 存储过程里面用游标就可以了,相当于 你先执行查主表,然后循环主表记录,针对于每一条记录处理次表的数据即可。 这样的话 也就不会全表操作了

0
认真做事开心做人

引用来自“认真做事开心做人”的评论

引用来自“gs586169”的评论

全表操作的话 数据量大的时候问题多多,但是 又是最简单的做法,如果 没有特殊要求 楼上的说法可行

数据量不是很大,50000条,但是有些特殊要求:如果c表手机号为空,则不更新,同时c表有重复数据即usercode可能重复。不能删除a表数据,只能更新或新增

引用来自“gs586169”的评论

其实 你想灵活控制的话, 存储过程里面用游标就可以了,相当于 你先执行查主表,然后循环主表记录,针对于每一条记录处理次表的数据即可。 这样的话 也就不会全表操作了

好的,谢谢您。当您有空的时候可以写个demo放到这里。方便以后有人可以查询,哈哈!

开源中国马桶盖
开源中国马桶盖
我不玩oracle很多年了~~
返回顶部
顶部