簡體   English   中英

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

[英]How to use OUTPUT clause with SELECT/INTO statement

我有以下查詢

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

CREATE臨時表#JediINSERT其中的數據。

我想使用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子句。 它僅適用於insertupdatedeletemerge

另一種選擇是分兩部分進行:首先,創建沒有記錄的臨時表:

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;

不能在同一個語句中使用OUTPUTINTO

select into將避免日志記錄。 當您使用insert into它就違背了目的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM