Pourquoi je reçois Erreur lors de la conversion du type de données varchar en float error dans bcp query out?

Je suis nouveau dans le sql server , écrivez cette requête bcp pour sauvegarder le résultat de la search dans le file csv:

 declare @Price as float set @Price=1744 EXEC xp_cmdshell 'bcp "select [Telno],[Cycle],[Price] FROM [ClubEatc].[dbo].[CycleAnalysisTable] where CONVERT(float, [Price])>''CONVERT(float, @Price)''" queryout d:\F.txt -c -T' 

Mais quand j'exécute cette requête, obtenez cette erreur:

Erreur = [Microsoft] [Pilote ODBC 11 pour SQL Server] [SQL Server] Erreur lors de la conversion du type de données varchar en float.

Comment puis-je résoudre ce problème? Merci à tous.

Vous avez des guillemets, c'est pourquoi votre requête s'est déroulée comme suit:

 select [Telno],[Cycle],[Price] FROM [ClubEatc].[dbo].[CycleAnalysisTable] where CONVERT(float, [Price])>'CONVERT(float, @Price)' 

Et SQL Server ne peut CONVERT CONVERT(float, @Price) pour flotter.

Essayez de l'exécuter comme ceci:

 declare @Price as float, @Query nvarchar(max), @sql nvarchar(max) SELECT @Price=1744 SELECT @Query = 'select [Telno],[Cycle],[Price] FROM [ClubEatc].[dbo].[CycleAnalysisTable] where CONVERT(float, [Price])>' +CAST(@Price as varchar(100)) SELECT @sql= 'EXEC xp_cmdshell ''bcp "'+@Query+'" queryout d:\F.txt -c -T''' EXEC sp_executesql @sql 

MODIFIER

Une autre façon:

 declare @Price as float, @bcp varchar(max) SELECT @Price=1744 SELECT @bcp= 'bcp "select [Telno],[Cycle],[Price] FROM [ClubEatc].[dbo].[CycleAnalysisTable] where CONVERT(float, [Price])>' +CAST(@Price as nvarchar(100))+'" queryout d:\F.txt -c -T' EXEC master..xp_cmdshell @bcp