Asd*_*dfg 10 merge sql-server-2008
我正在尝试使用MERGE语句来完成以下操作.我有一个SP,我正在向它传递TableValue参数.这就是我的SP的样子:
CREATE PROC sp_AddInformation
@IntoTbl dbo.Information READONLY ,
@baseEventType dbo.EventType READONLY
AS
BEGIN
MERGE Information
USING (SELECT InfoID, NewsID, NewsType FROM @IntoTbl ) AS baseInfo (InfoID, NewsID, NewsType)
ON (info.infoID = baseInfo.InfoID)
WHEN MATCHED
THEN
--EXEC dbo.sp_insertEventInfo(@baseEventType) (This is not working)
UPDATE set Info.Reporter = baseInfo.Reporter
WHEN NOT MATCHED BY SOURCE
THEN
DELETE
WHEN NOT MATCHED BY TARGET
THEN INSERT VALUES (InfoID, NewsID,NewsType);
END
Run Code Online (Sandbox Code Playgroud)
有谁知道如何在WHEN MATCHED块中调用另一个SP或在其他表上执行另一个MERGE?
Mik*_*son 10
无法从when matched块调用存储过程或合并.您只能进行更新或删除(或两者).从合并文档.
<merge_matched>::=
{ UPDATE SET <set_clause> | DELETE }
Run Code Online (Sandbox Code Playgroud)
您可以使用output子句捕获已更新的行when matched.输出可以在表变量中捕获,然后可以在另一个合并语句或存储过程中使用.在输出中使用inserted.*和$action.来自when matched哪里的行$action = 'UPDATE'