我正在SQL Server 2008 R2中执行MERGE语句。我想要做的是在NOT MATCHED分支中有一个更多的逻辑:
WHEN NOT MATCHED THEN
INSERT (col1, col2, col3)
VALUES (SOURCE.col1, SOURCE.col2, SOURCE.col3)
OUTPUT INSERTED.col1, SOURCE.col4
INTO @Mapping
INSERT INTO @newChildren
( col1,
other columns,)
SELECT
( TARGET.col1,
other columns)
FROM @input
INNER JOIN @Mapping
ON @input.col1 = @Mapping.col2
EXECUTE Children_Create @newChildren;
这个想法是使用INSERT结果来形成另一个存储过程的另一个输入。但似乎SQL Server 2008 MERGE不支持控制流。我不能把BEGIN / END包装成这个代码。有任何建议可以克服这个限制吗?
答案 0 :(得分:2)
INSERT
,UPDATE
和DELETE
关键字是MERGE
的一部分,可能会让您认为MERGE
是一种复合语句。但它只是一个复杂的。上述关键字引入了MERGE
的子句,而不是单独的相应陈述,但它们可能与后者类似。
所以是的,如果不是作为一个单独的程序,但至少在MERGE
之外是必须如何实现你的额外插入。