如果我有一条insert语句,比如:
INSERT INTO MyTable
(
Name,
Address,
PhoneNo
)
VALUES
(
'Yatrix',
'1234 Address Stuff',
'1112223333'
)
如何使用OUTPUT子句将@var INT
设置为新行的标识值(称为Id
)?例如,我见过将INSERTED.Name放入表变量的示例,但我无法将其放入非表变量。
我试过OUPUT INSERTED.Id AS @var
和SET @var = INSERTED.Id
,但都不管用。
发布于 2012-06-12 23:07:29
您可以将新插入的ID输出到SSMS控制台,如下所示:
INSERT INTO MyTable(Name, Address, PhoneNo)
OUTPUT INSERTED.ID
VALUES ('Yatrix', '1234 Address Stuff', '1112223333')
你也可以在C#中使用它,当你需要将ID返回给你的调用应用时-只需使用.ExecuteScalar()
(而不是.ExecuteNonQuery()
)执行SQL查询来读回结果ID
。
或者,如果您需要在T-SQL中捕获新插入的ID
(例如,用于以后的进一步处理),则需要创建一个表变量:
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
)甚至“真正的”持久表作为“输出目标”。
https://stackoverflow.com/questions/10999396
复制相似问题