Bonjour.
Débutant en SQL dynamique, Je n'arrive pas à résoudre le problème généré par la requête suivante. Je suis sur SQL SERVER 2005 SP3, WINDEV 17 78n, accès natif client SQL SERVER.
DEClARE
@VAR1 INT,
@VAR2 VARCHAR(1000),
@VAR3 VARCHAR(1000),
@VAR4 INT,
@VAR5 VARCHAR(1000),
@VAR6 VARCHAR(1000)
INSERT INTO TmpOldDevis
(IDOldDEVIS)
Select Devis.IDDevis From Devis where Devis.IDPropositions = 36524
INSERT INTO TmpNewDEVIS
(IDNewDEVIS)
Select Devis.IDDevis From Devis where Devis.IDPropositions = 37899
SET @VAR1 = 1
BEGIN TRAN
WHILE @VAR1 <= (Select Count(*) From TmpOldDevis)
BEGIN
SET @VAR2 ='SELECT (IDOldDEVIS) FROM TmpOldDevis WHERE Temp_IDOldDEVIS ='+CAST(@VAR1 as VARCHAR(3))
EXECUTE(@VAR2);
SET @VAR3= 'INSERT INTO TmpLignesMateriels(IDLignesMateriels,IDDevis,IDProduits,Designation,Quantité,PrixNetHT,TotalHT,PrixAchatHT,NumeroLigne,IDTVA,
RemiseAnnuelle,RemiseComplementaire,PrixNetHT_RA,TotalHT_RA)
SELECT IDLignesMateriels,IDDevis,IDProduits,Designation,Quantité,PrixNetHT,TotalHT,PrixAchatHT,NumeroLigne,IDTVA,
RemiseAnnuelle,RemiseComplementaire,PrixNetHT_RA,TotalHT_RA FROM LignesMateriels Inner Join
TmpOldDevis On LignesMateriels.IDDevis = TmpOldDevis.IDOldDEVIS WHERE LignesMateriels.IDDevis = TmpOldDevis.IDOldDEVIS and TmpOldDevis.Temp_IDOldDEVIS='+CAST(@VAR1 as VARCHAR(3)) /*+CAST(159021 as VARCHAR(6))159021' +CAST(159021 as VARCHAR(6))+*//*TmpOldDevis.IDOldDEVIS and TmpOldDevis.Temp_IDOldDEVIS='+CAST(@VAR1 as VARCHAR(3)) */
print @var3
EXECUTE(@VAR3);
SET @VAR5 ='(SELECT (IDNewDEVIS) FROM TmpNewDEVIS WHERE Temp_IDNewDEVIS = '+CAST(@VAR1 as VARCHAR(3))+')'
EXECUTE(@VAR5);
SET @VAR6 ='INSERT INTO LignesMateriels(IDDevis,IDProduits,Designation,Quantité,PrixNetHT,TotalHT,PrixAchatHT,NumeroLigne,IDTVA,
RemiseAnnuelle,RemiseComplementaire,PrixNetHT_RA,TotalHT_RA)
SELECT '+@VAR5+',IDProduits,Designation,Quantité,PrixNetHT,TotalHT,PrixAchatHT,NumeroLigne,IDTVA,RemiseAnnuelle,RemiseComplementaire,PrixNetHT_RA,TotalHT_RA
FROM TmpLignesMateriels Inner Join TmpOldDevis On TmpLignesMateriels.IDDevis = TmpOldDevis.IDOldDEVIS WHERE TmpOldDevis.IDOldDEVIS = TmpOldDevis.IDOldDEVIS and TmpOldDevis.Temp_IDOldDEVIS='+CAST(@VAR1 as VARCHAR(3))
EXECUTE(@VAR6);
SET @var1 = @var1+1
END
COMMIT TRAN
J'ai systématiquement le message suivant "Le nom de la variable @P1 a déjà déclaré. les noms des variables doivent être unique dans un lot de requêtes ou une procédure stockée".
SQL State 42000
SQL ERROR 134.
Par avance, merci de votre aide.
Partager