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 :
mais avec un paramètre pour la liste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT categ from MATABLE WHERE categ IN ('A','B','C')
J'ai pondu ça :
Appel à la procédure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 VARIABLE rc REFCURSOR; execute X_TEST('A,C',:rc); print rc;
Merci d'avance.
Partager