2013-10-16 8 views
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 "'[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''' 
Смежные вопросы