Appel d'un package en fonction d'un paramètre [Résolu]

Signaler
Messages postés
24
Date d'inscription
mercredi 28 avril 2010
Statut
Membre
Dernière intervention
18 mai 2012
-
Messages postés
24
Date d'inscription
mercredi 28 avril 2010
Statut
Membre
Dernière intervention
18 mai 2012
-
Bonjour,
Voila j'ai un problème à l'heure actuelle dont je ne suis pas sure qu'il soit résolvable. :s
je possède une fonction qui prend en paramètre un nom et qui fera appel au package correspondant :

function initialise_global (nom varchar2) return number is
BEGIN
...
PKG_||nom||.initialise();
...
END;
je sais pas comment faire :s

3 réponses

Messages postés
24
Date d'inscription
mercredi 28 avril 2010
Statut
Membre
Dernière intervention
18 mai 2012

Le problème étais que execute immediate exécute une requête sql et non une procédure PL/SQL définie.
Pour contourner le problème il faut :

function initialise_global (nom varchar2) return number is
stmt_str    VARCHAR2(200);
BEGIN
...
stmt_str := 'PKG_' || nom || '.initialise();';
EXECUTE IMMEDIATE 'BEGIN '||stmt_str|| ' END;';
...
END; 
Messages postés
72
Date d'inscription
mercredi 7 février 2007
Statut
Membre
Dernière intervention
25 juillet 2013
1
Bonjour,

As-tu essayé avec Execute Immediate ?

function initialise_global (nom varchar2) return number is
stmt_str    VARCHAR2(200);
BEGIN
...
stmt_str := 'PKG_' || nom || '.initialise()';
EXECUTE IMMEDIATE stmt_str;
...
END; 


Code non testé car je n'ai pas oracle installé.

-------------------
Oderint dum metuant
Messages postés
24
Date d'inscription
mercredi 28 avril 2010
Statut
Membre
Dernière intervention
18 mai 2012

Désolé du temps de réponse,
Alors ta solution ne marche pas :ORA-00900: instruction SQL non valide.
Alors que si j'éxécute l'instruction en brute de se que j'ai dans le stmt_str, il arrive à l'exéctuer