0
我正在設計一個按計劃運行的存儲過程。它的目的是根據OpenQuery的結果更新表格。 OpenQuery將返回一些全新的記錄和一些更新的記錄。我目前有這樣寫的。使用合併有效更新整行
DELETE A
FROM TableA A
JOIN @OpenQueryResult B
ON A.Key1 = B.Key1 AND A.Key2 = B.Key2
INSERT INTO TableA
(.
.
.)
SELECT
.
.
.
FROM @OpenQueryResult
注:TableA
除了擁有數計算字段均來自@OpenQueryResult
列。
我想找到一個更好的方法來做到這一點。通過一些研究,似乎Merge將是一個不錯的選擇,因爲它減少了開銷,從而縮短了執行時間。我想象的事情看起來有點像這樣:
MERGE TableA AS target
USING @OpenQueryResult AS source
ON (target.Key1 = source.Key1 AND target.Key2 = source.Key2)
WHEN MATCHED THEN
UPDATE ...
WHEN NOT MATCHED THEN
INSERT ...
VALUES ...
所有我在網上看到明確列出應更新的列的例子。有沒有捷徑說「複製所有匹配的列名」?表格A在列數上相當龐大。