我正在尝试在SQL Server 2014中编写一个脚本,该脚本导入日期在文件名中的一系列文件。我将每天运行一次,每天导出的文件名中都有相应的日期。我想将日期设置为变量,以避免必须通过脚本并将日期输入到导入语句的每个文件路径中(每天大约有20种不同的报告)。
这就是我现在拥有的:
DECLARE @date VARCHAR(50)
DECLARE @engagements VARCHAR(MAX)
DECLARE @findings VARCHAR(MAX)
SET @date = '20180708'
GO
SET @engagements = 'bulk insert dbo.engagements
from ''\\sanascl\users$\MG3976\My Documents\Report Exports\' + @date + '-Engagements_sqltest.txt''
WITH
(
FIRSTROW = 2,
fieldterminator = ''\t'',
ROWTERMINATOR = ''\n''
)
'
GO
SET @findings = 'bulk insert dbo.findings
from ''\\sanascl\users$\MG3976\My Documents\Report Exports\' + @date + '-findings_sql.txt''
WITH
(
FIRSTROW = 2,
fieldterminator = ''\t'',
ROWTERMINATOR = ''\n''
)
'
GO
EXEC(@engagements)
GO
EXEC(@findings)
GO
但是,当我运行它时,我会得到
137消息,第15级,州2,第8行
必须声明标量变量“ @date”
,并且该错误消息在调用@date
变量的每一行中重复。此外,其他变量在其各自的Exec
语句中也会重复出现该错误。
我尝试重新排列声明和set语句,但是没有任何效果-请帮助!
答案 0 :(得分:2)
SQL Server中的GO执行批处理并清除变量。
DECLARE @testing INT = 0
SELECT @testing
GO
SELECT @testing
删除它,它将起作用
DECLARE @testing INT = 0
SELECT @testing
SELECT @testing