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临时表#Jedi和INSERT其中的数据。
我想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在第一个查询中使用该子句?
不能在output语句中使用子句select。这仅适用于insert,update,delete和merge。
另一种选择是分两部分进行:首先,创建没有记录的临时表:
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)