Bonjour,
J'ai un problème pour ecrire une procedure.
Idealement, je voudrais ecrire la procedure suivante
sachant que var1 peux contenir plusieurs valeurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 PROCEDURE maProc ( var1 IN VARCHAR2, cs OUT SYS_REFCOURSOR ) IS BEGIN open CS for select * from maTable where monChamps in ( var1 ); END;
exemple 'bleu','blanc','rouge'
Mais cette procedure ne fonctionne pas !!!
Elle compile, mais ne renvois pas de resultat correct
J'ai alors essayé de proceder de la facon suivante
Mais ici, l'affectation cs := C1 ne compile pas !!!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 PROCEDURE maProc ( var1 IN VARCHAR2, var2 IN VARCHAR2 DEFAULT null, var3 VARCHAR2 DEFAULT null, cs OUT SYS_REFCOURSOR ) IS CURSOR C1 IS select * from maTable where champs in (var1, var2, var3 ); BEGIN open C1; cs := C1; END;
Une solution serait de construire la requete comme suit :
mais je ne veux pas utilise cette methode car ma requete peu faire une centaine de ligne et que j'ai plusieur parametres de ce type
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 PROCEDURE maProc ( var1 IN VARCHAR2, cs OUT SYS_REFCOURSOR ) IS myQuery varchar2; BEGIN myquery := 'select ....... champs1 in ( ' || var1 || ' ) ....'; open cs for myQuery; END;
Quelqu'un aurait il une idée pour resoudre mon problème.
Merci
Partager