我的 PL/SQL 技能非常有限,所以如果这是不明智的,我深表歉意。基本上,我有一个循环遍历一个 clob。当 clob 的值为空时,循环在过去(无限循环)给我带来了问题。我试图在这个循环的代码中构建一些检查,但是我防止无限循环的努力失败了。
以下是相关的代码片段:
v_offset NUMBER DEFAULT 1;
v_response CLOB;
SELECT VALUE
INTO v_response
FROM json_cache
WHERE json_key = 'EMPLOYEES';
--infinite loop occurs when v_response = ''
LOOP
EXIT WHEN v_offset > DBMS_LOB.getlength (v_response)
or DBMS_LOB.getlength (v_response) = 0
or v_offset = 400000;
HTP.prn (DBMS_LOB.SUBSTR (v_response, 20000, v_offset));
v_offset := v_offset + 20000;
END LOOP;
语句中的附加条件不应该EXIT WHEN
防止发生无限循环吗?v_response
为空时如何终止/防止此循环?我想避免将此循环包装在 if 语句中,并且更喜欢循环中的守卫。