Ich habe ein Feld in einer Tabelle mit 'SMITH, ALLEN, WARD, JONES'. Ich versuche, Zeilen aus der Tabelle mit dem Cursor zu lesen und wenn dieses bestimmte Feld gefunden wird, verwendet regexp_substr, um es mit ','
als Trennzeichen zu teilen. HierPL/SQL-Cursor wird nicht beendet, wenn Nulldaten gefunden werden
ist der Code:
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;
Ich möchte die Namen getrennt zurückgegeben, so sollte dieser Cursor verlassen nach vier Werte Druck, da nach, dass es Null-Werte zurückgibt. Aber %NOTFOUND
Zustand verlässt nicht die Schleife und es bleibt Schleifen. Ich kann das Problem nicht herausfinden.
Vielen Dank. Das funktioniert -> wenn lvar null ist, dann exit; Ende wenn; . Der Level-Parameter gibt alle Sätze zurück, aber ich brauche nur einen, das ist der Grund, warum ich mit '1' gegangen bin. – Varghese