Bonjour,
Je débute sous Oracle, je connais bien SQL Server et j'avoue que le passage sur ce nouveau sgbd ne se fait pas en douceur pour moi
.
Je cherche à écrire une procédure stockée avec en paramètre d'entrée une liste du type 'A,B,C'
Je souhaite lister tous les enregistrements d'une table avec une condition sur cette liste
Du style :
SELECT categ from MATABLE WHERE categ IN ('A','B','C')
mais avec un paramètre pour la liste.
J'ai pondu ça :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| create or replace PROCEDURE X_TEST (
P_LISTE IN VARCHAR2,
p_cursor OUT sys_refcursor
)
AS
BEGIN
OPEN p_cursor FOR
select categ from MATABLE
WHERE
categ IN
(
SELECT regexp_substr(P_LISTE,'[^,]+', 1, level) as c FROM dual
connect BY regexp_substr(P_LISTE, '[^,]+', 1, level) IS NOT NULL
);
END X_TEST; |
Appel à la procédure :
1 2 3
| VARIABLE rc REFCURSOR;
execute X_TEST('A,C',:rc);
print rc; |
Cela fonctionne bien mais je souhaite vérifier si il n'existe pas une solution plus simple, si je ne suis pas trop à "coté de la plaque" en terme de bonnes pratiques...
Merci d'avance.
Partager