0

カーソル内のこの「for update of」および「current of」句を手伝ってください...ただし、カーソルは無効な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;
4

1 に答える 1

2

EMP ではなく別のテーブル (EMP2) を更新したい場合、rowid が一致しないため、where current of を使用して別のテーブルを更新することはできません。

current of は、「処理中の行 ID に対して」を意味します。代わりに、その句の代わりに正しい列で結合する必要があります

于 2013-04-04T14:43:49.033 に答える