Cursor com ciclo while e if

DECLARE @TimeStampNew ,@TimeStampOld datetime

DECLARE CURSOR_REGISTO_OPERACOES CURSOR FOR
SELECT SequenciaOperacoes,CodigoOld,QuantidadeOld,VersaoOld,TimeStampOld,NóOld,CodigoNew,QuantidadeNew,VersaoNew,TimeStampNew,NóNew from registoOperacao ORDER BY CodigoOld

OPEN CURSOR_REGISTO_OPERACOES

FETCH NEXT FROM CURSOR_REGISTO_OPERACOES INTO @SequenciaOperacoes,@CodigoOld,@QuantidadeOld,@VersaoOld,@TimeStampOld,@NóOld,@CodigoNew,@QuantidadeNew,@VersaoNew,@TimeStampNew,@NóNew

 WHILE (@@fetch_status = 0)

	BEGIN 
		SET @MINIMO_REGISTO=(SELECT MIN(SequenciaOperacoes)FROM registoOperacao)
		SET @MAXIMO_REGISTO=(SELECT MAX(SequenciaOperacoes)FROM registoOperacao)

		WHILE ( @MINIMO_REGISTO<=@MAXIMO_REGISTO)
		BEGIN 
		BEGIN TRAN
			IF(@TimeStampOld<=@TimeStampNew)
				UPDATE servido SET Codigo=@CodigoNew, Quantidade=@QuantidadeNew, Versao=@VersaoNew,TimeStamp=@VersaoNew,Nó=@NóNew WHERE Codigo=@CodigoNew
				COMMIT TRAN
			END	


FETCH NEXT FROM CURSOR_REGISTO_OPERACOES INTO @SequenciaOperacoes,@CodigoOld,@QuantidadeOld,@VersaoOld,@TimeStampOld,@NóOld,@CodigoNew,@QuantidadeNew,@VersaoNew,@TimeStampNew,@NóNew           

END