0
'SMITH、ALLEN、WARD、JONES'を含む表にフィールドがあります。私はカーソルを使用してテーブルから行を読み込もうとしています。この特定のフィールドが見つかったら、区切り文字として','
を使用してそれを分割するためにregexp_substrを使用しました。ここでnullデータが見つかったときにPL/SQLカーソルが終了しない
コードです:
PROCEDURE x26837a_dummy IS
CURSOR d_cursor IS
SELECT regexp_substr('SMITH,ALLEN,WARD,JONES', '[^,]+', 1, level)
FROM x26837a_dummy_table
CONNECT BY regexp_substr('SMITH,ALLEN,WARD,JONES', '[^,]+', 1, 1) IS NOT NULL
lvar VARCHAR2(128) := '';
BEGIN
OPEN d_cursor;
LOOP
FETCH d_cursor
INTO lvar;
EXIT WHEN d_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(lvar);
END LOOP;
CLOSE d_cursor;
END x26837a_dummy;
私は名前が個別に返さので、このカーソルは後に、それはNULL値を返すことから、4つの値を印刷した後に終了する必要がありたいと思います。しかし、%NOTFOUND
条件はループを終了せず、ループを維持します。問題を理解していないようです。
ありがとうございます。これは、lvarがnullで終了した場合に動作します。終了する。 。レベルパラメータはすべてのセットを返しますが、私は1つしか必要ありません、それが私が '1'で行った理由です。 – Varghese