J'ai un champ dans un tableau contenant 'SMITH, ALLEN, WARD, JONES'. J'essaie de lire les lignes de la table en utilisant le curseur et quand ce champ particulier est trouvé, utilisé regexp_substr pour le diviser en utilisant ','
comme délimiteur.Le curseur PL/SQL ne se ferme pas lorsque des données nulles ont été trouvées
Voici le 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;
Je veux les noms retournés séparément, de sorte que ce curseur doit quitter après l'impression quatre valeurs, car après qu'elle renvoie des valeurs NULL. Mais la condition %NOTFOUND
ne quitte pas la boucle et continue à boucler. Je n'arrive pas à comprendre le problème.
Merci beaucoup. Cela fonctionne-> si lvar est nul puis quitte; fin si; . Le paramètre level retourne tous les sets mais je n'en ai besoin que d'un, c'est la raison pour laquelle je suis passé à '1'. – Varghese