首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用INSERT语句的OUTPUT子句来获取标识值?

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

Stack Overflow用户
提问于 2012-06-12 23:03:49
回答 1查看 336.4K关注 0票数 263

如果我有一条insert语句,比如:

代码语言:javascript
复制
INSERT INTO MyTable
(  
  Name,
  Address,
  PhoneNo
)
VALUES
(
  'Yatrix',
   '1234 Address Stuff',
   '1112223333'
)

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

我试过OUPUT INSERTED.Id AS @varSET @var = INSERTED.Id,但都不管用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-12 23:07:29

您可以将新插入的ID输出到SSMS控制台,如下所示:

代码语言:javascript
复制
INSERT INTO MyTable(Name, Address, PhoneNo)
OUTPUT INSERTED.ID
VALUES ('Yatrix', '1234 Address Stuff', '1112223333')

你也可以在C#中使用它,当你需要将ID返回给你的调用应用时-只需使用.ExecuteScalar() (而不是.ExecuteNonQuery())执行SQL查询来读回结果ID

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

代码语言:javascript
复制
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)甚至“真正的”持久表作为“输出目标”。

票数 525
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10999396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档