我想執行更新和選擇...基本上,基於索引更新,然後選擇已更新的行ID。更新輸出到一個變量
這是一個簡單的使用OUTPUT子句:
UPDATE Foo
SET Bar = 1
OUTPUT INSERTED.Id
WHERE Baz = 2
但現在,我怎麼到這個變量?
DECLARE @id INT
這三個不起作用:
UPDATE Foo
SET Bar = 1
OUTPUT @id = INSERTED.Id
WHERE Baz = 2
SET @id =
(UPDATE Foo
SET Bar = 1
OUTPUT INSERTED.Id
WHERE Baz = 2)
SET @id =
(SELECT Id FROM (UPDATE Foo
SET Bar = 1
OUTPUT INSERTED.Id Id
WHERE Baz = 2) z)
這包括最後一個,因爲它讓我暫時興奮,當所有的紅色squigglies Management Studio中走了。唉,我得到這個錯誤:
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.
我從來沒有想到這一點。非常好! –
感謝科裏,我想知道更新內的set關鍵字是否能夠設置一個變量,它的工作原理! –
這將工作與'插入'爲單個受影響的行? – rahoolm