MERGE 不适用于 Exec SP



我有以下 SP,

    MERGE INTO DeviceCatalog DC
    USING (SELECT @UniqueID AS UniqueID) T ON (DC.UniqueID = T.UniqueID)
    WHEN MATCHED THEN
        UPDATE   
    WHEN NOT MATCHED THEN
        INSERT  
    WHEN NOT MATCHED THEN
    IF(Condition)
    BEGIN
        EXEC DeleteDeviceID;
    END;

我不知道如何做到这一点?请帮忙

更新:我能够做到这一点,

    MERGE INTO DeviceCatalog DC
    USING (SELECT @UniqueID AS UniqueID) T ON (DC.UniqueID = T.UniqueID)
    WHEN MATCHED THEN
        UPDATE   
    WHEN NOT MATCHED THEN
        INSERT  
    WHEN NOT MATCHED THEN
        DELETE WHERE    [UniqueID] = @OldUniqueID; 
    END

但只有删除语句在抱怨。

MERGE 语句的"不匹配时"子句不支持删除。您必须使用"与来源不匹配时"。

MERGE INTO DeviceCatalog DC
USING (SELECT @UniqueID AS UniqueID) T ON (DC.UniqueID = T.UniqueID)
WHEN MATCHED THEN
    UPDATE  SET col1='somevalue'
WHEN NOT MATCHED THEN
    INSERT INTO  article (UniqueID) VALUES 'somevalue'
WHEN NOT MATCHED BY SOURCE AND UniqueID = @OldUniqueID  THEN
    DELETE; 
MERGE INTO DeviceCatalog DC
    USING (SELECT @UniqueID AS UniqueID) T ON (DC.UniqueID = T.UniqueID)
    WHEN MATCHED THEN
        UPDATE  [write what you hav to update] 
    WHEN NOT MATCHED THEN
        INSERT  [write what to insert] 
    WHEN NOT MATCHED THEN
        DELETE WHERE    [UniqueID] = @OldUniqueID; 
    END

看看这个:http://blog.sqlauthority.com/2008/08/28/sql-server-2008-introduction-to-merge-statement-one-statement-for-insert-update-delete/

最新更新