永发信息网

oracle存储过程 游标 比对临时表和业务表 相同数据找出来 做标记 在插入临时表中 代码怎么写

答案:2  悬赏:40  手机版
解决时间 2021-02-13 04:03
oracle存储过程 游标 比对临时表和业务表 相同数据找出来 做标记 在插入临时表中 代码怎么写
最佳答案
游标效率比临时表效率高
临时表如下:

SELECt EmpCo FROM Employees

select identity(int,1,1) as id,* into #T from Employees --第一条搜索语句
declare @i int
declare @total int
declare @EmpCo varchar(10)
select @total = count(*) from #T
set @i = 1
while @i <= @total
begin
select @EmpCo=EmpCo from #T where id = @i --第二条搜索语句,而且是循环执行的。
print @EmpCo
set @i = @i + 1
end

drop table #T

-----------------------------------------------
游标如下:

Declare @EmpCo as varchar(50)
Declare @EmpCo1 as varchar(50)

DECLARE Employee_Cursor CURSOR FOR
SELECT EmpCo FROM Employees ---只有在这有一条搜索语句
OPEN Employee_Cursor
FETCH NEXT FROM Employee_Cursor INTO @EmpCo
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Employee_Cursor INTO @EmpCo
print @EmpCo
END
CLOSE Employee_Cursor
DEALLOCATE Employee_Cursor

临时表的,要用两条搜索语句,而且是循环执行的。 ;然而,游标的只用一条搜索语句,没有循环执行的循环语句
全部回答
使用merge into就可以了。 示例 merge into bonuses d using (select employee_id, salary, department_id from employees where department_id = 80) s on (d.employee_id = s.employee_id) when matched then update set d.bonus = d.bonus + s.salary*.01 delete where (s.salary > 8000) when not matched then insert (d.employee_id, d.bonus) values (s.employee_id, s.salary*.01) where (s.salary <= 8000);
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
因为身体原因,高中的体育课可以申请不上吗?
是不是天蝎座的都很少朋友
【隐讳】...团改名的原因是革命形势发展要求
鑫源酒家地址在哪,我要去那里办事
for your pieces原曲
凯飞车行在什么地方啊,我要过去处理事情
张桃芳是江苏兴化哪个乡镇人
460打八折等于多少钱
多边形里最多可以有多少个不重复的三角形?
男人都是喜欢楚楚可怜的女人吗?
京鑫洗车行地址在哪,我要去那里办事
融化巧克力
4个柱24伏发电机接线图,各位车友有了解这个问
2020年高效精练九年级物理下册苏科版答案
雅致精品女装在哪里啊,我有事要去这个地方
推荐资讯
有两个相同容器盛满水,甲中有一个体积为50立
求欧美彩漫dickgirl个人翻译全套啊。。。都要
2017秦皇岛6789音乐节什么时间
报销生育津贴的时候社保查准生证能查出本人的
小麦同学很喜欢看穿越小说,自己也构思了几个
如何在本机截图
盘子里当个弯的黄瓜猜成语是什么
办公用品专营店地址在什么地方,我要处理点事
磁盘缓存的磁盘缓冲方式
极限竞速地平线车房宝藏怎么找?
前叶子板内衬安装方法有哪些,有没有好心的车
新航道托福阅读真经难度 谁知道它比tpo难还是
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?