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

Messages postés
25
Date d'inscription
mercredi 28 avril 2010
Dernière intervention
18 mai 2012
- - Dernière réponse : cs_vincent303
Messages postés
25
Date d'inscription
mercredi 28 avril 2010
Dernière intervention
18 mai 2012
- 18 mai 2012 à 13:09
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
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
25
Date d'inscription
mercredi 28 avril 2010
Dernière intervention
18 mai 2012
3
Merci
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; 

Merci cs_vincent303 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_vincent303
Messages postés
72
Date d'inscription
mercredi 7 février 2007
Dernière intervention
25 juillet 2013
0
Merci
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
Commenter la réponse de pmcoste
Messages postés
25
Date d'inscription
mercredi 28 avril 2010
Dernière intervention
18 mai 2012
0
Merci
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
Commenter la réponse de cs_vincent303

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.