SQL Server 2008 - Declaración MERGE - Realice varias acciones en el bloque WHEN MATCHED

Estoy tratando de usar la declaración MERGE para lograr lo siguiente. Tengo un SP y le estoy pasando el parámetro TableValue. Así es como se ve mi 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

¿Alguien sabe cómo puedo llamar a otro SP o realizar otro MERGE en otras tablas en el bloque WHEN MATCHED?

preguntado el 16 de mayo de 11 a las 19:05

2 Respuestas

No es posible llamar a un procedimiento almacenado o fusionar desde el when matched cuadra. Solo puede actualizar o eliminar (o ambos). De la documentación en unir.

 <merge_matched>::=
     { UPDATE SET <set_clause> | DELETE }

Puede utilizar el salida cláusula para capturar las filas que se actualizaron en when matched. La salida se puede capturar en una variable de tabla que luego puede usar en otra declaración de combinación o en un procedimiento almacenado. Utilizar inserted.* y $action en la salida. Las filas de when matched es donde $action = 'UPDATE'

contestado el 17 de mayo de 11 a las 00:05

La sintaxis muestra que UPDATE SET o DELETE son las únicas opciones para merge_matched

como se muestra aquí

contestado el 17 de mayo de 11 a las 00:05

¿Puedo usar otra instrucción Merge en When Matched o When Not Match? - asdfg

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.