将MERGE转换为T-SQL命令

oop*_*ase 0 merge sql-server-2008

我有一个T-SQL MERGE命令在我的SQL Server 2008上运行正常.不幸的是,代码也必须在SQL Server 2005数据库上工作.

我需要更改什么,以使以下代码在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);
Run Code Online (Sandbox Code Playgroud)

gbn*_*gbn 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
Run Code Online (Sandbox Code Playgroud)

每个声明都比MERGE简单得多