如何使用 INSERT 语句的 OUTPUT 子句获取标识值?

2023-12-26

如果我有一个插入语句,例如:

INSERT INTO MyTable
(  
  Name,
  Address,
  PhoneNo
)
VALUES
(
  'Yatrix',
   '1234 Address Stuff',
   '1112223333'
)

我该如何设置@var INT到新行的标识值(称为Id)使用 OUTPUT 子句?例如,我见过将 INSERTED.Name 放入表变量中的示例,但我无法将其放入非表变量中。

我试过了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')

您也可以使用它,例如C#,当您需要将 ID 返回给调用应用程序时 - 只需执行 SQL 查询即可.ExecuteScalar()(代替.ExecuteNonQuery())读取结果ID back.

或者如果您需要捕获新插入的ID在 T-SQL 内部(例如,为了以后的进一步处理),您需要创建一个表变量:

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)或者甚至是一个“真正的”持久表作为您的“输出目标”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 INSERT 语句的 OUTPUT 子句获取标识值? 的相关文章

随机推荐