[英]How to use output clause in SQL to output insert, update, delete results into new temporary table?
目前,我正在嘗試在SQL Server中執行update
(但它可能是任何支持output
子句的 DML語句 ),並且我想將輸出放入本地臨時表中,如下所示:
update
dbo.MyTable
set
MyField = 30
output
inserted.MyKeyField
into
#myTempTable
from
dbo.MyTable as t
where
f.MyFilteredField = 8
我知道語法是正確的,根據output
子句的文檔(強調我的):
output_table
指定將返回的行插入的表,而不是返回給調用者。 output_table可以是臨時表 。
也就是說,我希望它能像在select
語句中的into
子句中一樣工作,因為它只會創建表。
但是,我收到以下錯誤:
無效的對象名稱'#myTempTable'。
如何將output
子句( inserted
或deleted
)的結果輸入臨時表?
output
子句不會生成新表,因此您必須事先生成表, 該表與output
子句中指定的結構相匹配 ,例如:
select t.MyKeyField into #myTempTable from dbo.MyTable as t where 1 = 0
注意,您不必使用上面的select into
語法, create table
也可以。 最后,最簡單的方法是創建一個與output
子句中的字段匹配的空臨時表。
創建表后,“無效對象名稱”錯誤將消失,DML語句將無錯誤地執行(假設沒有其他錯誤)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.