如何在 SELECT/INTO 语句中使用 OUTPUT 子句

Nic*_*sse 4 sql t-sql sql-server sql-server-2012

我有以下查询

SELECT 'Luke' AS [Jedi_names], 'Skywalker' AS [Jedi_surname]
INTO #Jedi
Run Code Online (Sandbox Code Playgroud)

其中CREATE临时表#JediINSERT其中的数据。

我想OUTPUT用来显示我保存在表中的数据,但我无法理解如何使用该OUTPUT子句而不收到错误消息

“'输出'附近的语法不正确。”

INSERT INTO查询中,我会写以下内容

INSERT INTO #Jedi([Jedi_names],[Jedi_surname])
OUTPUT INSERTED.*
SELECT 'Luke' AS [Jedi_names], 'Skywalker' AS [Jedi_surname]
Run Code Online (Sandbox Code Playgroud)

但这只是INSERT表已经创建的行..

是否可以OUTPUT在第一个查询中使用该子句?

Zoh*_*led 5

不能在output语句中使用子句select。这仅适用于insertupdatedeletemerge

另一种选择是分两部分进行:首先,创建没有记录的临时表:

SELECT 'Luke' AS [Jedi_names], 'Skywalker' AS [Jedi_surname]
INTO #Jedi 
WHERE 1=0
Run Code Online (Sandbox Code Playgroud)

然后,使用以下命令将记录插入到临时表中insert...output...select

INSERT INTO #Jedi
OUTPUT INSERTED.*
SELECT 'Luke' AS [Jedi_names], 'Skywalker' AS [Jedi_surname]
Run Code Online (Sandbox Code Playgroud)

或者简单地使用select into然后select

SELECT 'Luke' AS [Jedi_names], 'Skywalker' AS [Jedi_surname]
INTO #Jedi;

SELECT  [Jedi_names], [Jedi_surname]
FROM #Jedi;
Run Code Online (Sandbox Code Playgroud)