全部博文(6)
分类: Oracle
2010-04-11 18:36:27
比如向给部门加工资:
一.用三条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;
用游标的好处:
1.在缓存中修改,一次性提交!!!
2.先查出数据并锁定,不会出现并发访问的问题。
用游标的坏处:
锁定的数据要多,并发可能大的时候反而会降低性能
最终结论:并发可能大的时候不用游标。