您的代码段中有几个错误:首先,您将变量声明为 varchar(10),而您打算将它们用作数字。它们应该被声明为 smallint、int 或 bigint。
然后,您将使用这些 varchar 变量组成一个字符串,并尝试将 1 添加到存储在 @inCount 中的值并加上数字 1。
由于您的变量是字符串而不是数字,因此 + 符号会尝试连接它们。
要了解您的错误,首先,您应该将数字 1 转换为字符串,这样编写 EXEC:
exec ('SET ' + @intCount + ' = ' + @intCount + '1')
完成此操作后,只需删除 EXEC 并将要连接的字符串分配给新的字符串变量。所以:
DECLARE @composedQuery varchar(1000)
SET @composedQuery = 'SET ' + @intCount + ' = ' + @intCount + '1'
SELECT @composedQuery
你会看到这样的结果:
SET 5 = 51
当然,这不是您打算用 EXEC 执行的,不是吗?:)
其他答案中已为您提供了正确的解决方案。我重写了完整的片段:
declare @intCount int
declare @intConst int
set @intCount = 5
set @intConst = 1
SET @intCount = @intCount + 1
--OR
SET @intCount = @intCount + @intConst