みなさん、こんにちは。私はPL / SQLに少し慣れていないので、少し混乱しています。カーソルが呼び出されrec
、ループ中に2つのネストされたIFステートメントがあります。
CURSOR Cur IS
SELECT Mil.Id,
Mil.Record_Num,
Mil.Status,
Mil.file_processed,
Mil.Updated_By
FROM status_log mil
WHERE Mil.file_processed != 'Processed'
For Update of Mil.file_processed;
FOR Rec IN Cur LOOP
IF (Rec.status = 'Ready' OR Rec.status = 'Go') THEN
IF Length(Rec.Zip) = 5 AND
(Substr(Rec.Zip, 1, 3) = '303' OR
Substr(Rec.Zip, 1, 3) = '304' ) THEN
l_state:= 'ATL';
END IF;
UPDATE status_log mil
SET file_processed = 'Processed'
WHERE current of cur
END IF;
COMMIT;
END LOOP;
これで、カーソルに2番目を満たすレコードが1つある場合IF
(つまり、Zipの長さが5で、コードが303または304で始まる場合)update
、そのレコードとそれ以降のすべてのレコードのステートメントはヒットしなくなります。ループ内EXIT
のロジックの後にステートメントを使用しようとしましたが、役に立ちませんでした。IF
私は何が間違っているのですか?