使用带有OUTPUT子句的公用表表达式

时间:2013-12-25 08:45:30

标签: sql sql-server tsql sql-server-2012 common-table-expression

我看到使用CTE v / s临时表获得了巨大的性能提升。目前我有:

DECLARE @OutputTbl TABLE (ID INT)

INSERT INTO MyTable(Name, Address, PhoneNo)
OUTPUT INSERTED.ID INTO @OutputTbl(ID)
VALUES ('Yatrix', '1234 Address Stuff', '1112223333')

我想在这里使用CTE。有可能吗?

1 个答案:

答案 0 :(得分:4)

不,您无法在INSERT中使用CTE_query_definition语句:

  

指定SELECT语句,其结果集填充公共   表格。必须使用CTE_query_definition的SELECT语句   满足与创建视图相同的要求,但CTE不能   定义另一个CTE。有关更多信息,请参阅“备注”部分和   CREATE VIEW(Transact-SQL)。

     

如果有多个CTE_query_definition   如果已定义,则查询定义必须由其中一个集合连接   运营商:UNION ALL,UNION,EXCEPT或INTERSECT。

CTE official documentation

CREATE VIEW official documentation