次の方法で2つのテーブルをマージする必要があります。
- ターゲットには1つの追加の列IDがあります。このIDは、別の単一列マスターテーブルから取得されます。
- マージステートメントにレコードを挿入するときに、新しい行をマテリアルテーブルに挿入し、それを使用し
id
てTARGETテーブルに挿入する必要があります。
新しく挿入されたIDを挿入して返すストアドプロシージャを作成しました。現在、問題はSQLマージ内にあり、ストアドプロシージャを呼び出すことはできません。
この問題の解決策は何でしょうか?関数ではINSERTを実行できないため、スカラー関数を使用できません。
DECLARE @temp INT
MERGE dbo.mytabletarget T
USING dbo.mytableSource S
ON T.refId=S.RefId
WHEN MATCHED THEN
UPDATE
SET T.col1=S.col1,
T.Col2=S.Col2
WHEN NOT MATCHED BY TARGET THEN
INSERT (Id,col1,col2)
VALUES({Here i need value from SP. SP simply Inserts a new Id into master table and Returns it},S.col1,S.col2);
GO