Ce qui suit est mon code de procédure stockée:
Alter PROCEDURE [dbo].[ConvertToFile] @TempFileName varchar(8000) AS BEGIN SET NOCOUNT OFF; DECLARE @bcpFileCmd varchar(8000) SET @bcpFileCmd= 'bcp "SELECT id,full_Name,message from NotesTable " queryout '+@TempFileName+' -t, -c -T' EXEC master..xp_cmdshell @bcpFileCmd END
BCP vide toutes datatables de NotesTable dans le file. Mais je dois joindre les résultats du message avec des guillemets doubles. Le type de données pour le message est du text. Je ne suis pas en mesure de l'append dans une requête select dans BCP.
Vous devrez concaténer les guillemets doubles au début et à la fin des résultats de votre message, et échapper à la fois les guillemets simples et doubles:
SET @bcpFileCmd= 'bcp "SELECT id, full_Name, ''""'' + message + ''""'' from NotesTable " queryout '+@TempFileName+' -t, -c -T'
Si vous avez besoin de conserver le nom de la colonne, vous devriez également l'alias comme ceci (peut-être pas nécessaire si vous ne faites que sortir dans un file):
SET @bcpFileCmd= 'bcp "SELECT id, full_Name, ''""'' + message + ''""'' ''message'' from NotesTable " queryout '+@TempFileName+' -t, -c -T'