2015-02-23 107 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'