oracle pl sql 更新游标

EMP表在SCOTT用户下。用SCOTT/TIGER登录。

创建EMP表的副本:

CREATE TABLE EMP1 AS SELECT * FROM EMP;

创建更新游标,用来更新EMP1:

DECLARE
CURSOR C_UPDATE IS SELECT EMPNO, ENAME, JOB, SAL FROM EMP1 FOR UPDATE OF SAL;
V_ROW C_UPDATE%ROWTYPE;
V_SAL EMP1.SAL%TYPE;
BEGIN
  FOR V_ROW IN C_UPDATE LOOP
    IF V_ROW.SAL < 1500 THEN
      V_SAL := V_ROW.SAL * 1.2;
    ELSIF V_ROW.SAL < 2000 THEN
      V_SAL := V_ROW.SAL * 1.5;
    ELSIF V_ROW.SAL < 3000 THEN
      V_SAL := V_ROW.SAL * 2;
    END IF;
    UPDATE EMP1 SET SAL=V_SAL WHERE CURRENT OF C_UPDATE;
  END LOOP;
  COMMIT;
END;

更新前:



更新后:



下面转自:http://blog.csdn.net/yanleigis/article/details/2950208

1、UPDATE语句仅更新在游标声明的FOR UPDATE子句处列出的列。如果没有列出任何列,那么所有的列都可以更新。 

2、示例中的COMMIT是在提取循环完成以后才完成的,因为COMMIT将释放由该会话持有的所有锁。因为FOR UPDATE子句获得了锁,所以COMMIT将释放这些锁。当锁释放了,该游标就无效了。所以后继的提取操作都将返回ORACLE错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值