Запрос SQL Server xp_cmdshell: добавьте переменные в команду - PullRequest
0 голосов
/ 02 ноября 2018

У меня правильно работает запрос, но я хочу иметь возможность добавить переменную значения даты в команду.

Вот что у меня есть:

DECLARE @varDate DATE

SET @varDate = CAST(DATEADD(day, -1, GETDATE()) AS DATE)

EXEC master..xp_cmdshell 'SQLCMD -E -S "EMERALDSERVER\LASERFICHERIO" -s"," -W -Q "SET NOCOUNT ON EXEC PullSageData.[dbo].[Report_Daily_Superintendent_Jobs]" | findstr /V /C:"-" /B > C:\Laserfiche\import\Reports\Reports_"+@varDate+".csv'

Там, где находится @varDate, следует просто заменить на вчерашнюю дату.

Пример имени файла:

Reports_2018_10_31.csv

вместо этого выводит имя файла:

Reports+@varDate+.csv

Я предполагаю, что ввод переменной в одинарных кавычках не применяется к двойным кавычкам и +, как я видел во многих примерах.

1 Ответ

0 голосов
/ 02 ноября 2018

Вы должны создать новую переменную, которая содержит все, и выполнить из нее Пример:

declare @varDate date
SET @varDate=CAST(DATEADD(day,-1,GETDATE()) as date)
declare @Script varchar (max) = 'SQLCMD -E -S "EMERALDSERVER\LASERFICHERIO" -s"," -W -Q "SET NOCOUNT ON EXEC PullSageData.[dbo].[Report_Daily_Superintendent_Jobs]" | findstr /V /C:"-" /B > C:\Laserfiche\import\Reports\Reports_varDate.csv'
declare @cmd varchar(max)= replace(@Script,'@varDate',@varDate)
EXEC master..xp_cmdshell @cmd
...