繁体   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