2009-02-28 8 views
0

comment dans la même procédure puis-je accéder aux paramètres de la procédure en utilisant une requête
par exemple: voir cette procédurecomment utiliser un paramètre de procédure dans une requête

procedure game(left in tab.left%type,right in tab.right%type,...) 
is 
--some local variables 
begin 
merge into tgt_table 
using subquery --(here is what i need to use the parameters) 
on some condition 
when matched then 
update the tgt table 
when not matched then 
insert the table; 
end game; 

Dans la procédure ci-dessus et dans l'état de fusion, i besoin d'une requête telle qu'elle utilise la valeur des paramètres en tant que référence de table et en utilisant ces valeurs, elle soit mise à jour ou insérée dans la table en fonction de la condition donnée.

Aidez-moi s'il vous plaît. Merci à l'avance

Répondre

1

Vous devez utiliser SQL dynamique si vos paramètres définissent la table à utiliser - quelque chose comme:

procedure game(left in tab.left%type,right in tab.right%type,...) 
is 
    --some local variables 
    l_sql long; 
begin 
    l_sql := 'merge into tgt_table' 
      || ' using ' || left 
      || ' on some condition' 
      || ' when matched then' 
      || ' update ' || right 
      || ' when not matched then' 
      || ' insert the table'; 
    execute immediate l_sql; 
end game; 

Cependant, vous avez beaucoup plus de travail laissé à faire, puisque les clauses condition, update et insert doivent toutes changer en fonction des tables utilisées. Je ne suis pas convaincu que cette acquisition sera particulièrement utile en fait.