2012-05-22 56 views
0

我有一個在我的SQL Server 2008上正常工作的T-SQL MERGE命令。不幸的是,代碼也必須在SQL Server 2005數據庫上工作。將MERGE轉換爲T-SQL命令

爲了使SQL Server 2005中的下列代碼可以運行,我需要做些什麼改變?

謝謝你的幫助。

DECLARE @CNVAL varchar(100) = 'xyz' DECLARE @ATRBT varchar(100) = 'abcde' DECLARE @CON varchar(100) = 'fgh' 
MERGE into CNEXTR as target 
USING (VALUES(@CON, @ATRBT, @CNVAL)) 
    AS source([Name], ATTR, CNVAL) 
    ON (target.[Name] = source.[Name]) 
    AND (target.ATTR = source.ATTR) 
WHEN MATCHED THEN 
    UPDATE SET 
     CNVAL = source.CNVAL 
WHEN NOT MATCHED THEN 
    INSERT([Name], ATTR, CNVAL) 
    VALUES(source.[Name], source.ATTR, source.CNVAL); 

回答

5

更改爲

BEGIN TRAN 

    UPDATE CNEXTR 
    SET CNVAL = @CNVAL 
    WHERE [Name] = @CON AND ATTR = @ATRBT; 

    IF @@ROWCOUNT = 0 
     INSERT CNEXTR ([Name], ATTR, CNVAL) 
     VALUES(@CON, @ATRBT, @CNVAL); 

COMMIT TRAN 

每條語句都將遠遠超過MERGE簡單