|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2004 Messages : 94 ![]() |
Bonjour,
J'exécute une requête SQL dynamique à l'aide de EXECUTE IMMEDIATE et en utilisant le mot clef USING pour passer des variables, mais mon problème est que j'utilise deux fois un même paramètre dans la requête. Oracle me sort un message d'erreur : ORA-01008: Toutes les variables ne sont pas liées ORA-06512: à "PSCM.NPALIMTBPSCM01", ligne 37 ORA-06512: à ligne 11 Exemple requête : Citation:
Je dois faire : Citation:
Merci pour votre aide ! |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
C'est comme ça. Les bind variables de l'execute sont toutes différentes pour lui. que tu lui mette :1, :1, :2 ou :a, :b, :a, ce sont 3 variables qu'il attend.
|
|
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Notez aussi qu'une bind variable ne peut que remplacer un littéral, généralement dans une clause WHERE. Une bind variable ne peut pas remplacer un nom de colonne dans la liste des colonnes sélectionnées (entre le SELECT et le FROM).
|
|
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2004 Messages : 94 ![]() |
Bonsoir,
Aïe ! On va faire avec... D'ailleurs, j'ai commencé ainsi ! Pour le nom des colonnes ou tables, je concatène... Je ne sais pas si c'est bon, mais je vois pas comment faire autrement pour modifier le nom d'une table dynamiquement dans une requête SQL. Question bête, USING accepte combien de bind variables ? |
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Pour avoir plus de flexibilité que EXECUTE IMMEDIATE, il faut utiliser la package DBMS_SQL (mais c'est plus difficile): http://sheikyerbouti.developpez.com/execute_immediate/
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com