为什么需要游标

[color=red]加工资:[/color]
一.用三条SQL语句:

update emp set sal=sal+1000 where deptno=10;
update emp set sal=sal+2000 where deptno=20;
update emp set sal=sal+3000 where deptno=30;

二.用PL/SQL块,不用显示游标

begin
update emp set sal=sal+1000 where deptno=10;
update emp set sal=sal+2000 where deptno=20;
update emp set sal=sal+3000 where deptno=30;
dbms_output.put_line('Done!!!');
end;


三.用显示游标

declare
emp_row emp%rowtype;
cursor emp_cur is select * from emp where deptno=10 or deptno=20 or deptno=30 for update;
begin
open emp_cur;
loop
fetch emp_cur into emp_row;
exit when emp_cur%notfound;
if emp_row.deptno=10 then
update emp set sal=sal+1000 WHERE CURRENT OF emp_cur;
end if;
if emp_row.deptno=20 then
update emp set sal=sal+2000 WHERE CURRENT OF emp_cur;
end if;
if emp_row.deptno=30 then
update emp set sal=sal+3000 WHERE CURRENT OF emp_cur;
end if;
end loop;
close emp_cur;
end;


[color=blue]用游标的好处:

1.在缓存中修改,一次性提交!!!
2.先查出数据并锁定,不会出现并发访问的问题。[/color]
[color=darkred]用游标的坏处:

锁定的数据要多,并发可能大的时候反而会降低性能
数据频繁更新,数据同步会有很大消耗![/color]
最终结论:并发可能大的时候不用游标。数据频繁更新不用游标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值