是否有任何“简单”方法来执行此操作,或者需要使用“OUTPUT ... INTO”语法传递表变量?将SQL Server输出子句转换为标量变量
DECLARE @someInt int
INSERT INTO MyTable2(AIntColumn)
OUTPUT @SomeInt = Inserted.AIntColumn
VALUES(12)
是否有任何“简单”方法来执行此操作,或者需要使用“OUTPUT ... INTO”语法传递表变量?将SQL Server输出子句转换为标量变量
DECLARE @someInt int
INSERT INTO MyTable2(AIntColumn)
OUTPUT @SomeInt = Inserted.AIntColumn
VALUES(12)
您需要一个表变量,它可以是这么简单。
declare @ID table (ID int)
insert into MyTable2(ID)
output inserted.ID into @ID
values (1)
过了一年之后...如果你需要的是获得自动生成的表的ID,你可以
SELECT @ReportOptionId = SCOPE_IDENTITY()
否则,就好像你被卡住使用表。
但后来我不得不“从@ID选择@someInt = ID”。我想知道是否有可能跳过额外的步骤(和中间表变量),如果我需要的只是结果int。 – Benoittr 2011-04-05 21:33:46
@Benoittr - 这取决于你将如何使用该值,它可能不是必需的,你可以在select语句的from子句中使用该表。当您分配一个变量时,您还需要确保插入仅插入一行。如果插入只插入一行,也许更容易直接获取value子句中使用的内容而不是使用'output'? – 2011-04-05 21:42:46
在自动生成值的情况下,并不总是可以提前知道这些值(标识,计算列)。我知道有很多解决方法。不过,你给了我我正在寻找的答案。谢谢 – Benoittr 2011-04-06 20:56:03