DECLARE
strSql varchar2(100);
CURSOR EMP_CURSOR IS SELECT ENAME,SAL FROM EMP FOR UPDATE;
EMP_RECORD EMP_CURSOR%ROWTYPE;
BEGIN
     strSql:='ALTER TRIGGER  tr_emp_time DISABLE';
     EXECUTE IMMEDIATE strSql;      
     OPEN EMP_CURSOR;
     LOOP
          FETCH EMP_CURSOR INTO EMP_RECORD;
          EXIT WHEN EMP_CURSOR%NOTFOUND;
          IF EMP_RECORD.SAL<2000 THEN
             UPDATE EMP SET SAL=SAL*1.1 WHERE CURRENT OF EMP_CURSOR;
          END IF;
    END LOOP;
END;  
上面定义的游标,CURSOR EMP_CURSOR IS SELECT ENAME,SAL FROM EMP FOR UPDATE;
红字部分到底是代表上面呢?详细点儿哈,谢谢了

解决方案 »

  1.   

    术业有专攻,把楼主的帖子移到Oracle版块去了,希望理解
      

  2.   


    嘿嘿,麻烦您啦,其实刚才是问错地方了,直接点了确定,我在ORCLE板块也问了一次,哈哈,不管怎样,答案是有了,谢谢了
      

  3.   

    for update 就是查询的时候锁定EMP表的记录,其它人不能再对emp表进行update,delete 等操作了。必须等你commit 或者rollback 了 ,其它人才可以操作。 可以防止丢失更新,保证数据一致性。
       你可以开2个用户,测试一下。 
    已回答过~
    http://topic.csdn.net/u/20120904/14/5fcea355-e7e3-4e6a-8b0e-bbb8d3c2d35c.html?49192
      

  4.   

    for update 就是查询的时候锁定EMP表的记录,其它人不能再对emp表进行update,delete 等操作了。必须等你commit 或者rollback 了 ,其它人才可以操作。 可以防止丢失更新,保证数据一致性。
       你可以开2个用户,测试一下。 
    已回答过~
    http://topic.csdn.net/u/20120904/14/5fcea355-e7e3-4e6a-8b0e-bbb8d3c2d35c.html?49192