Nom de procedure en variable

Fermé
Sophos - Modifié par Sophos le 30/08/2010 à 12:01
 Sophos - 31 août 2010 à 09:53
Bonjour,


En fait, je crée une procédure dans Toad.
Je souhaite, pour automatiser un maximum de chose, lancer une procédure dans la première.
Mais son nom sera lu dans une table.
Donc récupérée en temps que variable.
Et donc ...
w_proc_recuperer (...) le nom de la procédure est une variable ....

comment puis-je la lancer, avec ses propres parametres, bien sur !


Dans le même style, je voullais faire un INSERT ou un DELETE dont le nom de la table serait également lu dans une autre table, et donc :
INSERT INTO w_table .....
Le nom de la table est une variable ...

quelqu'un sait faire ?

Merci d'avance ;-)

sophos


1 réponse

loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
30 août 2010 à 15:42
1) Il suffit de faire un tableau d'une structure contenant le nom de la fonction et un pointeur vers cette fonction. Lors de la connaissance du nom de la fonction, faire une recherche dans le tableau et appeler la fonction par le pointeur concerné.
2) Il suffit de construire une chaine de caractère par exemple en concaténant les différents éléments ("INSERT INTO ", puis 'nomTable', ...).
Evidemment si tu avais bien voulu dévoiler le langage utilisé, la réponse aurait sans doute été plus adaptée ;-)
Bonne continuation.
0
Heu, je n'ai pas chercher à dissimuler quoi que ce soit ...
Pour moi, Toad sert à travailler avec des tables oracle.
Et donc, j'utilise du langage sql et pl-sql ;-)

Je n'y ai tout simpelment pas pensé.

Par contre, je pense avoir trouver une solution pour la procédure, en passant par une autre porcédure qui contient un open :
extrait :
dbms_sql.parse
(source_cursor,
'begin '||p_script||'(:w_param1, :w_param2, :w_param3, :w_param4,:w_param5, :w_param6, :w_param7, :w_param8); end;',
dbms_sql.native);

Il faut que je l'adapte bien sur, à mon programme ;-)

Pour la table, dans ma procédure, j'écris juste :
DELETE ma_table WHERE zone1 = p_zone_ref
ou bien
INSERT INTO ma_table (zone1, zone2)
VALUES (p_zone1, pzone2 );

Et je souhaitais que "ma_table" puisses être variable ... zone venant d'une autre lecture, permettant de récupérer son nom d'une base de donnée, plutot qu'en dur dans la procédure ,-)
voila !

Merci en tout cas de votre réponse !

Bone journée
Sophos
0