为什么它不接受 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...."

@WhIDNVARCHAR(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 是数字,请小心。然后你需要先将值转换为字符串。