problème d'ecriture de procedure
Bonjour,
J'ai un problème pour ecrire une procedure.
Idealement, je voudrais ecrire la procedure suivante
Code:
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; |
sachant que var1 peux contenir plusieurs valeurs :
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
Code:
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; |
Mais ici, l'affectation cs := C1 ne compile pas !!!!
Une solution serait de construire la requete comme suit :
Code:
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; |
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
Quelqu'un aurait il une idée pour resoudre mon problème.
Merci