Salut
Je développe une procédure stockée dans laquelle je veut appeler des autres procédures ou fonction dont les noms sont stockés dans une base de données.
Comment je peut appeler dynamiquement ces procédures ?
Salut
Je développe une procédure stockée dans laquelle je veut appeler des autres procédures ou fonction dont les noms sont stockés dans une base de données.
Comment je peut appeler dynamiquement ces procédures ?
Avec EXECUTE IMMEDIATE.
Conseil afin d'éviter les posts d'erreurs : Quand on développe, toujours afficher par DBMS_OUTPUT la chaine de caractère qui va être exécutée par le Execute Immediate. Quand c'est bon, on l'enlève.
More Code : More Bugs. Less Code : Less Bugs
Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP
Merci McM pour la réponse,
J'ai déjà travaillé avec EXECUTE IMMEDIATE pour des requêtes sql.Mais est ce que je peut l'utilisé pour l'appel d'une fonction ,si oui comment faire et comment je puisse recupérer alors le resultat de mon fonction(je suppose que toutes mes fonctions retourne un boolean)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Create or Replace Function f1() return number is ... End;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Declare n number ; Begin EXECUTE IMMEDIATE 'Select f1 from dual' INTO n ; End;
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
Je ferrais plutôt
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 declare l_num pls_integer; begin execute immediate 'begin :n := f(); end;' Using Out l_num; -- dbms_output.put_line(l_num); end;
les 2 fonctionnent:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 1 DECLARE 2 n NUMBER ; 3 Begin 4 EXECUTE IMMEDIATE 'Select ff1 from dual' INTO n ; 5 dbms_output.put_line('n:' || n); 6* END; SQL> / n:1 Procédure PL/SQL terminée avec succès. SQL>
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
Merci SheikYerbouti pou votre aide ,
j'ai testé votre proposition avec une procedure stocké test_code:
mais ma procédure n'est pas appelé et j'ai une erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part test_code('2742337') from dual
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2java.sql.SQLException: ORA-00904: "test_code" : identificateur non valide
Merci SheikYerbouti pou votre aide ,
j'ai testé votre proposition avec une procedure stocké test_code:
mais ma procédure n'est pas appelé et j'ai une erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part select test_code('2742337') from dual
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2java.sql.SQLException: ORA-00904: "test_code" : identificateur non valide
?? mais vous voyez bien, dans l'example qu'il faut utiliser EXECUTE IMMEDIATE.
Si vous ne donnez pas le code exact est complet que vous testez, on ne peut pas le deviner...
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager