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