我想这样做:
DECLARE @Id INT;
UPDATE Logins
SET SomeField = 'some value'
OUTPUT @Id = Id
WHERE EmailAddress = @EmailAddress -- this is a parameter of the sproc
这有可能吗?我知道我可以声明一个本地表变量并将输出定向到那里,但是如果可能的话,我宁愿跳过它
我想这样做:
DECLARE @Id INT;
UPDATE Logins
SET SomeField = 'some value'
OUTPUT @Id = Id
WHERE EmailAddress = @EmailAddress -- this is a parameter of the sproc
这有可能吗?我知道我可以声明一个本地表变量并将输出定向到那里,但是如果可能的话,我宁愿跳过它
Answers:
不可以,因为您可能会显示OUTPUT
多行,而这行将不适合标量变量。
您需要输出到@Table
变量或声明的表中以处理多行输出。
SELECT
。我收到错误消息,"A nested INSERT, UPDATE, DELETE, or MERGE statement is not allowed in a SELECT statement that is not the immediate source of rows for an INSERT statement."
这很不幸,因为当您知道只影响一行时,这是一个非常干净的解决方案。