SQL Server-“必须声明标量变量”错误消息,即使我刚刚声明了它

时间:2018-07-09 21:30:58

标签: sql-server variables sql-server-2014 variable-declaration

我正在尝试在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语句,但是没有任何效果-请帮助!

1 个答案:

答案 0 :(得分:2)

SQL Server中的GO执行批处理并清除变量。

DECLARE @testing INT = 0

SELECT @testing 

GO 

SELECT @testing

删除它,它将起作用

DECLARE @testing INT = 0

SELECT @testing 
SELECT @testing
相关问题