如果我有一个插入语句,例如:
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(使用前将#替换为@)