我的查询工作正常,但是我希望能够在命令中添加日期值变量。
这是我到目前为止所拥有的:
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
我的猜测是,在单引号中输入变量不适用于双引号和+,就像我在许多示例中看到的那样。
答案 0 :(得分:1)
您必须创建一个包含所有内容的新变量并从中执行 示例:
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