为什么它不接受 concat 字符串作为 SP 中的参数?
why it doesnt accept a concated string as parameter in SP?
我编写了一个完美运行的 SP。我用常规参数调用 SP 并工作。但是,现在我需要像下面这样调用 SP
EXEC @v_nReturn = sp_get_next_value 'LP_' + @WhID + '_COUNTER'
智能感知在第一个 '+'
符号上给出错误。
It says "incorrect syntax err...."
@WhID
是 NVARCHAR(10)
,所以我不应该将其转换为 NVARCHAR
。
有什么问题?
尝试使用括号:
EXEC @v_nReturn = (sp_get_next_value 'LP_' + @WhID + '_COUNTER')
SQL 当您调用存储过程时,服务器不进行(完整)表达式解析。这绝对是一个小改动会非常方便的地方,尽管可能有充分的理由限制。
如评论中所述,使用单独的变量:
DECLARE @arg varchar(256) = 'LP_' + @WhID + '_COUNTER';
EXEC @v_nReturn = sp_get_next_value @arg;
如果 @WhID
是数字,请小心。然后你需要先将值转换为字符串。
我编写了一个完美运行的 SP。我用常规参数调用 SP 并工作。但是,现在我需要像下面这样调用 SP
EXEC @v_nReturn = sp_get_next_value 'LP_' + @WhID + '_COUNTER'
智能感知在第一个 '+'
符号上给出错误。
It says "incorrect syntax err...."
@WhID
是 NVARCHAR(10)
,所以我不应该将其转换为 NVARCHAR
。
有什么问题?
尝试使用括号:
EXEC @v_nReturn = (sp_get_next_value 'LP_' + @WhID + '_COUNTER')
SQL 当您调用存储过程时,服务器不进行(完整)表达式解析。这绝对是一个小改动会非常方便的地方,尽管可能有充分的理由限制。
如评论中所述,使用单独的变量:
DECLARE @arg varchar(256) = 'LP_' + @WhID + '_COUNTER';
EXEC @v_nReturn = sp_get_next_value @arg;
如果 @WhID
是数字,请小心。然后你需要先将值转换为字符串。