0

データをテキスト ファイルにコピーする次のストアド プロシージャがあります。

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 "'+@SQL+'" queryout "'+@FileName+'" -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".

4

1 に答える 1

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 "'+@SQL+'" queryout "'+@FileName+'" -T -c'''   
于 2013-10-16T20:49:04.533 に答える