Chinaunix首页 | 论坛 | 博客
  • 博客访问: 30405
  • 博文数量: 6
  • 博客积分: 311
  • 博客等级: 二等列兵
  • 技术积分: 95
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-08 09:05
文章分类

全部博文(6)

文章存档

2012年(1)

2010年(5)

我的朋友

分类: 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.先查出数据并锁定,不会出现并发访问的问题。

用游标的坏处:

锁定的数据要多,并发可能大的时候反而会降低性能


最终结论:并发可能大的时候不用游标。

阅读(646) | 评论(0) | 转发(0) |
0

上一篇:Oracle修改表结构

下一篇:java语言的概述

给主人留下些什么吧!~~