2013-10-16 53 views
0

我有以下存儲過程將數據複製到一個文本文件:傳遞日期參數動態查詢BCP

SET QUOTED_IDENTIFIER OFF 
GO 
SET ANSI_NULLS OFF 
GO 


ALTER Procedure BCP_Inv_Text_File 
( 
@FileName varchar(100), 
@DocDate varchar(10) 
) 
as 
     Declare @str varchar(1000) 
     Declare @SQL varchar(1000) 
     set @SQL = 'Select T0.DocNum, T0.DocDate FROM Demo88..OINV T0 WHERE DocDate = @DocDate' 
     set @str='Exec Master..xp_Cmdshell ''bcp "'[email protected]+'" queryout "'[email protected]+'" -T -c''' 
     Exec(@str) 

SET QUOTED_IDENTIFIER ON 
GO 
SET ANSI_NULLS ON 
GO 

話,我希望能夠執行類似這樣的程序:

EXEC BCP_Inv_Text_File 'C:\Export\Inv.txt', '8/9/2013'

我得到以下錯誤:

Error = [Microsoft][SQL Native Client][SQL Server]Must declare the scalar variable "@DocDate".

回答

0

我發現爲了在日期參數的BCP語句中得到正確的語法,我必須添加額外的單引號,如下所示:

set @SQL = 'Select T0.DocNum, T0.DocDate FROM Demo88.dbo.OINV T0 WHERE T0.DocDate = ''''' + @DocDate + '''''' 
    set @str='Exec Master..xp_Cmdshell ''bcp "'[email protected]+'" queryout "'[email protected]+'" -T -c'''