我想寫一個存儲過程來計算兩個輸入表之間的差異。如何使用存儲過程與表值參數比較兩個輸入表
存儲過程被用來計算(兩個表具有相同的預定義的表結構)中,存儲過程會提供記錄添加,刪除或比較表1〜表2
實施例時更新兩個表之間的差異:
- 表1新的具有3個記錄:A,B和C
- 表2具有3個記錄:B」,C和d
B」表示記錄B內的變化的一個或多個字段
這個存儲過程調用的輸出將是
A-addition
B-update
D-Removal
我已書寫的查詢,以計算兩個表之間的差值,但發現很難翻譯成存儲過程。
表結構:
X varchar (10)
Y int
Z datetime
SELECT
table1.*, ChangeType = 'Addition'
FROM
table1
WHERE
NOT EXISTS (SELECT *
FROM table2
WHERE table1.x = table2.x)
UNION ALL
SELECT
table2.*, ChangeType = 'Removal'
FROM
table2
WHERE
NOT EXISTS (SELECT *
FROM table1
WHERE table1.x = table2.x)
UNION ALL
SELECT
table1, ChangeType = 'Update'
FROM
table2
INNER JOIN
table1 ON table1.x = table2.x
WHERE
table1.Y <> table2.Y OR table1.Z <> table2.Z
還請包括在存儲過程執行腳本,以及。
的這裏的問題不是關於表比較邏輯,而是首先將表作爲表值參數傳遞給表,然而對新比較邏輯的建議是受歡迎的。 –
爲什麼表需要作爲參數傳入?爲什麼他們不能直接被SP引用? –
因爲表格可能並不總是相同的表格,所以我想考慮將來的更改。因此編寫一個存儲過程。 –