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

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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

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