2015-02-23 51 views
1

以下是我的存儲過程的代碼:如何逃避存儲過程中的SQL Server在BCP SQL查詢雙引號

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從NotesTable轉儲文件的所有數據。但是我需要用雙引號括住消息結果。消息字段的數據類型是文本。我無法將其附加到BCP中的選擇查詢中。

回答

1

您將需要連接雙引號的消息導致的開始和結束,並逃避這兩個單引號和雙引號:

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

如果您需要保留的列名,你也應該別名像這樣(可能不需要,如果你只是輸出到文件):

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