簡體   English   中英

SQL Server:多輸出子句

[英]SQL Server: Multiple Output Clauses

我有兩個表, Table_1Table_2

Table_1包含列PK (自動增量int )和Valuenchar(10) )。

Table_2FKint ), Keynchar(10) )和Valuenchar(10) )。

也就是說, Table_1是數據的一個表,並Table_2是一個鍵值存儲其中在一個行Table_1可以對應於0,1或更多個鍵和值在Table_2

我想編寫代碼,以編程方式構建一個查詢,使用Table_2中的主鍵將一行插入Table_1 ,將可變數量的行插入Table_1

我可以用一行輕松完成:

INSERT INTO Table_1 ([Value])
OUTPUT INSERTED.PK, 'Test1Key', 'Test1Val' INTO Table_2 (FK, [Key], [Value])
VALUES ('Test')

但SQL似乎不喜歡有多行的想法。 這失敗了:

INSERT INTO Table_1 ([Value])
OUTPUT INSERTED.PK, 'Test1Key', 'Test1Val' INTO Table_2 (FK, [Key], [Value])
OUTPUT INSERTED.PK, 'Test2Key', 'Test2Val' INTO Table_2 (FK, [Key], [Value])
OUTPUT INSERTED.PK, 'Test3Key', 'Test3Val' INTO Table_2 (FK, [Key], [Value])
VALUES ('Test')

有沒有辦法讓這項工作?

我不得不把代碼放在答案中,在評論中看起來很難看......

CREATE TABLE #Tmp(PK int, value nchar(10))

INSERT INTO Table_1 ([Value])
OUTPUT INSERTED.PK, inserted.[Value] INTO #Tmp
SELECT 'Test'

INSERT INTO Table_2 (FK, [Key], Value)
SELECT PK, 'Test1Key', 'Test1Val' FROM #Tmp
UNION ALL SELECT PK, 'Test2Key', 'Test2Val' FROM #Tmp
UNION ALL SELECT PK, 'Test3Key', 'Test3Val' FROM #Tmp

順便說一句,SQL Server不會讓你在一個查詢中完成所有操作而沒有一些丑陋的黑客...

嘗試將INSERTED.PK值放入參數,然后使用3 INSERT..VALUES或1 INSERT..SELECT語句插入表2。

暫無
暫無

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

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