大家好,我对 PL/SQL 有点陌生,所以有点困惑。我有一个 Cursor 调用rec
,并且在循环遍历它时我有两个嵌套的 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;
现在,只要光标有一个满足第二个记录IF
(即 Zip 长度为 5,代码以 303 或 304 开头),它就update
不再针对该记录和之后的所有记录命中该语句。我什至尝试EXIT
在循环中的逻辑之后使用该语句,IF
但无济于事。我究竟做错了什么?