Plsql 得到一个错误,说“我不知道”;无效的rowid";

Plsql 得到一个错误,说“我不知道”;无效的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

请帮助我在游标中使用“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_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在另一个表上我犯了一个多大的错误。。。谢谢你发现了