我写了一个完美的SP。我用常规参数调用SP并且工作了。但是,现在我需要调用SP,如下所示
EXEC @v_nReturn = sp_get_next_value 'LP_' + @WhID + '_COUNTER'
intellisense在第一个'+'
符号上出错。
它说“语法错误......”
@WhID
为NVARCHAR(10)
,因此我不应将其转换为NVARCHAR
。
问题是什么?
答案 0 :(得分:1)
尝试使用parens:
EXEC @v_nReturn = (sp_get_next_value 'LP_' + @WhID + '_COUNTER')
答案 1 :(得分:1)
调用存储过程时,SQL Server不执行(完整)表达式解析。这绝对是一个很小的变化非常方便的领域,尽管可能有很好的理由来限制。
如评论中所述,请使用单独的变量:
DECLARE @arg varchar(256) = 'LP_' + @WhID + '_COUNTER';
EXEC @v_nReturn = sp_get_next_value @arg;
如果@WhID
是数字,请务必小心。然后,您需要先将值转换为字符串。