[英]Stored Procedure as Parameter in MERGE [INSERT] Statement
我需要通过以下方式合并两个表:
id
插入TARGET表。 我创建了一个存储过程,该存储过程将插入并返回新插入的ID。 现在问题出在SQL合并内部,我们不能调用存储的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
该问题的解决方案是什么?
不要使用存储过程。 很明显,不是吗?
对于merge语句,您几乎总是在执行语句中的命令。 合并专注于ETL负载,既有优点也有限制。
基本上,将逻辑放入merge语句中。
当在Merge语句中插入记录时,我需要在主表中插入新行,并使用其ID插入TARGET表。
嗯,查询表维护吗?
常规方法是确保首先填充查找表(在单独的语句中)。 由于特定的原因,ETL(这就是合并的来源)通常会分阶段进行。
抱歉,我也没有更好的解决方案;(
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.