我需要通过以下方式合并两个表:
- 目标有一个额外的列 ID。此 ID 来自另一个单列主表。
- 在 Merge 语句中插入记录时,我需要在 mater 表中插入一个新行并使用它
id
插入到 TARGET 表中。
我创建了一个存储过程,它插入并返回新插入的 ID。现在问题出在 SQL Merge 内部,我们不能调用存储的 Proc。
这个问题的解决方案是什么?不能使用标量函数,因为 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