簡體   English   中英

如何在SQL中使用output子句輸出插入,更新,刪除結果到新的臨時表?

[英]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子句( inserteddeleted )的結果輸入臨時表?

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM