Plsql 得到一个错误,说“我不知道”;无效的rowid";
请帮助我在游标中使用“for update of”和“current of”子句。。。尽管光标能够获取记录,但会出现一个错误,称为invalid rowidPlsql 得到一个错误,说“我不知道”;无效的rowid";,plsql,Plsql,请帮助我在游标中使用“for update of”和“current of”子句。。。尽管光标能够获取记录,但会出现一个错误,称为invalid rowid DECLARE CURSOR C_EMP IS SELECT * FROM emp FOR UPDATE OF SAL;--LOCKING MEANS WE CANNOT MAKE ANY CHANGES ON THIS COLUMN WHILE THIS CODE IS RUNNING BEGIN FOR R_EMP IN C_E
DECLARE
CURSOR C_EMP IS SELECT * FROM emp FOR UPDATE OF SAL;--LOCKING MEANS WE CANNOT MAKE ANY CHANGES ON THIS COLUMN WHILE THIS CODE IS RUNNING
BEGIN
FOR R_EMP IN C_EMP LOOP
IF R_EMP.SAL<5000 AND C_EMP%FOUND THEN
UPDATE EMP2 SET SAL=SAL*1.1 WHERE CURRENT OF C_EMP;
END IF;
END LOOP;
END;
声明
光标C_EMP是从EMP中选择*以更新SAL--锁定意味着在代码运行时无法对此列进行任何更改
开始
对于C_EMP循环中的R_EMP
如果R_EMP.SAL假设您真的想更新另一个表(EMP2)而不是EMP,那么您就不能使用where current of来更新另一个表,因为rowid不匹配
其中,当前值表示“对于我们正在处理的rowid”。相反,您必须在右边的列而不是该子句上联接,假设您真的想更新另一个表(EMP2)而不是EMP,那么您就不能使用where current of
来更新另一个表,因为rowid不匹配。其中,当前值表示“对于我们正在处理的rowid”。相反,你必须在右边的栏中加入,而不是那个子句。谢谢@DazzaL。。。问题已解决。。。光标在一个表上,行id在另一个表上我犯了一个多大的错误。。。谢谢你发现了