如何使用INSERT语句的OUTPUT子句来获取标识值?
如果我有一个插入语句,如:
INSERT INTO MyTable ( Name, Address, PhoneNo ) VALUES ( 'Yatrix', '1234 Address Stuff', '1112223333' )
如何使用OUTPUT子句将@var INT
设置为新行的标识值(称为Id
)? 例如,我已经看到了将INSERTED.Name放入表variables的示例,但是我无法将它变成非表variables。
我试过OUPUT INSERTED.Id AS @var
, SET @var = INSERTED.Id
,但都没有工作。
提前致谢。
您可以将新插入的ID输出到SSMS控制台,如下所示:
INSERT INTO MyTable(Name, Address, PhoneNo) OUTPUT INSERTED.ID VALUES ('Yatrix', '1234 Address Stuff', '1112223333')
当你需要把ID返回给你的调用应用程序时,你可以使用这个方法,例如C#,只需要用.ExecuteScalar()
(而不是.ExecuteNonQuery()
)来执行SQL查询来读取返回的ID
。
或者,如果您需要在T-SQL中捕获新插入的ID
(例如用于以后的进一步处理),则需要创build一个表variables:
DECLARE @OutputTbl TABLE (ID INT) INSERT INTO MyTable(Name, Address, PhoneNo) OUTPUT INSERTED.ID INTO @OutputTbl(ID) VALUES ('Yatrix', '1234 Address Stuff', '1112223333')
这样,您可以将多个值放入@OutputTbl
,并对这些值进行进一步的处理。 你也可以在这里使用“常规”临时表( #temp
)甚至是“真正的”持久表作为你的“输出目标”。