Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/07/2011, 16h32   #1
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 63
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France

Informations forums :
Inscription : décembre 2008
Messages : 63
Points : 27
Points : 27
Par défaut Problème de conversion

Bonjour,

J'ai une erreur qui met remonte par le moteur SQL lorsque je lance le code SQL suivant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
DECLARE @req1 NVARCHAR(2000)
DECLARE @CodeColis VARCHAR (20)
DECLARE @Init_Num_Colis int
DECLARE @SDDELN_Max int
SELECT @SDDELN_Max = 2
SET @CodeColis ='1'
SET @Init_Num_Colis = 1
 
WHILE (@Init_Num_Colis <= @SDDELN_Max)
BEGIN
SET @req1 =	N'	SELECT 
		IDENTITY(int,' + @CodeColis + ', 1) as Num_Colis,
		ES.SDDELN			
		INTO Admin.dbo.C_Num_Colis
		FROM F4211_ES ES
	             WHERE ES.SDDELN = '+@Init_Num_Colis+''
		SELECT @req1
		EXEC sp_executesql @req1
		SELECT * FROM Admin.dbo.C_Num_Colis
		SELECT @Init_Num_Colis
		SET @Init_Num_Colis = @Init_Num_Colis +1
		DROP TABLE Admin.dbo.C_Num_Colis
END
Voici l'erreur qui est remontée :
Code :
1
2
3
4
5
6
7
8
 
Msg 245, Level 16, State 1, Line 11
Conversion failed when converting the nvarchar value '	SELECT 
IDENTITY(int,1, 1) as Num_Colis,
ES.SDDELN			
INTO Admin.dbo.C_Num_Colis
FROM F4211_ES ES
WHERE ES.SDDELN = ' TO DATA type int.
J'ai donc un probleme de conversion ' en INT.

Comment puis-je éviter ce petit soucis afin de passer le bon paramètre dans ma condition WHERE.

Merci d'avance.
Blacknounou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2011, 23h08   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 885
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 885
Points : 7 151
Points : 7 151
Bonjour,

As tu essayé de convertir en char
Code :
1
2
3
4
5
6
SET @req1 =	N'	SELECT 
		IDENTITY(int,' + @CodeColis + ', 1) as Num_Colis,
		ES.SDDELN			
		INTO Admin.dbo.C_Num_Colis
		FROM F4211_ES ES
	             WHERE ES.SDDELN = '+ cast(@Init_Num_Colis AS char(20))+''
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 08h21   #3
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 63
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France

Informations forums :
Inscription : décembre 2008
Messages : 63
Points : 27
Points : 27
Bonjour,

Oui j'ai essayé de convertir en char ça passe mais j'ai trouver une autre solution.

Il suffisait de définir une variable et passer cette variable en paramètres dans la procédure stockée sp_executesql :

Code :
1
2
3
4
5
6
7
8
 
DECLARE @ParmDefinition	nvarchar(500)
DECLARE @SQLString	nvarchar(500)
 
SET @Init_Num_Colis = 1
SET @ParmDefinition = N'@Init_Num_Colis_Param INT'
 
EXEC sp_executesql @req,@ParmDefinition, @Init_Num_Colis_Param = @Init_Num_Colis
Et le tour est joué.

Merci pour votre aide
Blacknounou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h07.


 
 
 
 
Partenaires

Hébergement Web