Comment faire pour échapper les guillemets doubles dans la requête bcp sql dans le server SQL de la procédure stockée

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'