首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

关于一句PLSQL文,没看懂,求大神解释,多谢啦,都来看看

2012-09-13 
关于一句PLSQL文,没看懂,求大神解释,谢谢啦,都来看看DECLAREstrSql varchar2(100)CURSOR EMP_CURSOR IS S

关于一句PLSQL文,没看懂,求大神解释,谢谢啦,都来看看
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;
红字部分到底是代表上面呢?详细点儿哈,谢谢了

[解决办法]
for update 就是查询的时候锁定EMP表的记录,其它人不能再对emp表进行update,delete 等操作了。必须等你commit 或者rollback 了 ,其它人才可以操作。 可以防止丢失更新,保证数据一致性。
你可以开2个用户,测试一下。

热点排行