[英]How to use OUTPUT clause with SELECT/INTO statement
我有以下查詢
SELECT 'Luke' AS [Jedi_names], 'Skywalker' AS [Jedi_surname]
INTO #Jedi
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]
但是如果表已經創建,這只是INSERT
行..
是否可以在第一個查詢中使用OUTPUT
子句?
不能在select
語句中使用output
子句。 它僅適用於insert
、 update
、 delete
和merge
。
另一種選擇是分兩部分進行:首先,創建沒有記錄的臨時表:
SELECT 'Luke' AS [Jedi_names], 'Skywalker' AS [Jedi_surname]
INTO #Jedi
WHERE 1=0
然后,使用insert...output...select
將記錄插入到臨時表中:
INSERT INTO #Jedi
OUTPUT INSERTED.*
SELECT 'Luke' AS [Jedi_names], 'Skywalker' AS [Jedi_surname]
或者簡單地使用select into
然后select
:
SELECT 'Luke' AS [Jedi_names], 'Skywalker' AS [Jedi_surname]
INTO #Jedi;
SELECT [Jedi_names], [Jedi_surname]
FROM #Jedi;
請使用如下
CREATE TABLE #Jedi([Jedi_names] VARCHAR(20),[Jedi_surname] VARCHAR(20))
INSERT INTO #Jedi([Jedi_names],[Jedi_surname])
OUTPUT INSERTED.*
SELECT * FROM
(
SELECT 'Luke' AS [Jedi_names], 'Skywalker' AS [Jedi_surname]
)K
輸出
Jedi_names Jedi_surname
Luke Skywalker
這是您所追求的語法:
CREATE TABLE #Jedi ([Jedi_forename] varchar(50),
[Jedi_surname] varchar(50));
INSERT INTO #Jedi ([Jedi_forename],[Jedi_surname])
OUTPUT Inserted.*
SELECT 'Luke' AS [Jedi_names], 'Skywalker' AS [Jedi_surname]
DROP TABLE #Jedi;
不能在同一個語句中使用OUTPUT
和INTO
。
select into
將避免日志記錄。 當您使用insert into
它就違背了目的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.