2015-02-23 3 views
1

Ce qui suit est mon code de procédure stockée:Comment échapper des guillemets doubles dans la requête bcp sql serveur SQL 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 '[email protected]+' -t, -c -T' 

    EXEC master..xp_cmdshell @bcpFileCmd 

END 

BCP sauvegarde toutes les données de NotesTable dans le fichier. Mais je dois joindre les résultats du message avec des guillemets doubles. Le type de données pour le message est du texte. Je ne suis pas en mesure de l'ajouter dans une requête select dans BCP.

Répondre

1

Vous devrez concaténer des guillemets doubles au début et à la fin de vos résultats de message, et échapper à la fois les guillemets simples et doubles citations:

SET @bcpFileCmd= 'bcp "SELECT id, full_Name, ''""'' + message + ''""'' from NotesTable " queryout '[email protected]+' -t, -c -T' 

Si vous devez conserver le nom de colonne, vous devez également alias comme ça (peut-être pas nécessaire si vous ne faites que sortir dans un fichier):

SET @bcpFileCmd= 'bcp "SELECT id, full_Name, ''""'' + message + ''""'' ''message'' from NotesTable " queryout '[email protected]+' -t, -c -T'