【发布时间】:2021-10-12 20:52:32
【问题描述】:
在下面的代码中,我试图将一个局部变量设置为从 TSQL 中的执行语句返回的值。
声明的变量:@id
执行接受一个类型和一个增量数量,并返回一个值
期望的结果是设置返回给变量@id的值
下面的 select 语句将 @id 显示为 0,并且执行似乎正在返回该值但未将其设置为 @id。研究/谷歌搜索表明这是我应该如何将局部变量设置为执行语句返回的内容,但我显然做得不对。
declare @id int = -1
exec @id = AP_GET_NEXTID @type = 'CT', @increment = 1
print @id
select @id
下一个 ID 似乎已返回但未设置为 @id 字段。
【问题讨论】:
-
您需要使用 INSERT #TempTable EXEC 才能从 PROC 中获取结果。然后你可以选择值到你的变量中
-
考虑将 NextID 值作为输出参数而不是结果集返回。这将使您的生活更轻松。
-
@DanGuzman 在哪里可以找到输出参数的语法而不是结果集?我想这就是我认为我在做的事情。
-
documentation 显示语法。如果您将名为
@NextId的输出参数添加到 proc 中,请将其称为EXEC AP_GET_NEXTID @type = 'CT', @increment = 1, @NextId = @id OUTPUT;。
标签: sql sql-server tsql exec local-variables