我有一个存储过程,我将路径传递给文件,如:
EXEC spMyPathFile
@PFile = 'C:\TFiles\Paths\Test_1.1_Version.txt'
我想做的事情是循环播放,能够使用以下方式传递1.1和1.2等文件的多个版本:
DECLARE @intLp INT
DECLARE @a varchar(2)
SET @intLp = 1 WHILE (@intLp <2)
BEGIN IF @intLp = 1 BEGIN
SET @a = '1.1'
END
ELSE IF @intLp = 2
BEGIN
SET @a = '1.2'
END
EXEC spMyPathFile
@PFile = 'C:\TFiles\Paths\Test_'+@a+'_Version.txt'
SET @intLp = @intLp + 1
END
出于某种原因,我得到&#34;&#39;&#39;&#39;附近的语法不正确。&#34;就在@a之前。我显然没有正确加入我的变量。
有人能举例说明这应该是什么样的吗?
答案 0 :(得分:2)
更改
EXEC spMyPathFile
@PFile = 'C:\TFiles\Paths\Test_'+@a+'_Version.txt'
到
declare @FileName varchar(100) = 'C:\TFiles\Paths\Test_' + @a + '_Version.txt'
EXEC spMyPathFile
@PFile = @FileName
来自MSDN - Specify Parameters
过程调用提供的参数值必须是常量或变量;函数名称不能用作参数值。变量可以是用户定义的,也可以是系统变量,例如@@ spid。