2つの入力テーブル間の差異を計算するストアドプロシージャを作成しようとしています。2つの入力テーブルを比較するためにテーブル値パラメータでストアドプロシージャを使用する方法
ストアドプロシージャが二つのテーブル(両方のテーブルが同一の事前定義されたテーブル構造を有する)との間の差を計算するために使用される、ストアドプロシージャは、レコードを提供する表1を比較するときに削除または更新され、追加されたテーブルに2
例:B」、C及びD :表2は、3つのレコードがA、B及びC
- 表1新3つのレコードを有しています0
B」は、このストアドプロシージャ呼び出しの出力は
A-addition B-update D-Removal
あろうレコードB内の1つまたは複数のフィールドに変更
を示し、私は2つのテーブル間の差を計算するために、クエリを書かれています、ストアドプロシージャに変換するのが難しいことがわかりました。
表構造:
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
も同様に、ストアドプロシージャの実行スクリプトを記載してください。
AS PROC sp_mysp @ TABLE1 tableExample、@ table2のtableExample をCREATEここでの質問は、テーブル比較ロジックについてではなく、最初にテーブル値パラメータとしてテーブルを渡すことですが、新しい比較ロジックへの提案は歓迎されます。 –
テーブルをパラメータとして渡す必要があるのはなぜですか?なぜ彼らはSPによって直接参照されるだけではありませんか? –
テーブルが常に同じテーブルであるとは限りませんので、今後の変更を許可したいと思います。したがって、ストアドプロシージャを書く。 –