SQL> DECLARE
2 CURSOR curyj IS SELECT * FROM emp FOR UPDATE;
3 v_comm emp.comm%TYPE;
4 BEGIN
5 FOR emprow IN curyj
6 LOOP
7 IF emprow.job = 'CLERK' THEN
8 UPDATE emp1 SET sal = sal + 300 WHERE CURRENT OF curyj;
9 END IF;
10 END LOOP;
11 END;
12 /
ORA-01410: 无效的 ROWID
ORA-06512: 在 line 8
2 CURSOR curyj IS SELECT * FROM emp FOR UPDATE;
3 v_comm emp.comm%TYPE;
4 BEGIN
5 FOR emprow IN curyj
6 LOOP
7 IF emprow.job = 'CLERK' THEN
8 UPDATE emp1 SET sal = sal + 300 WHERE CURRENT OF curyj;
9 END IF;
10 END LOOP;
11 END;
12 /
ORA-01410: 无效的 ROWID
ORA-06512: 在 line 8
CURSOR curyj IS SELECT * FROM emp1 FOR UPDATE;
v_comm emp1.comm%TYPE;
BEGIN
FOR emprow IN curyj
LOOP
IF emprow.job = 'CLERK' THEN
UPDATE emp1 SET sal = sal + 300 WHERE CURRENT OF curyj;
END IF;
END LOOP;
END;
/错误之处在于你的游标使用的是emp,而更新的是emp1