I have a stored procedure that uses a forward only cursor to fetch all records meeting the criteria and then does a transaction in a &#039BEGIN TRANSACTION ... COMMIT TRANSACTION&#039 scenario. If an update is done on the select statement for the cursor as part of the transaction, the next FETCH NEXT statement will skip a record. It works ok if I declare a SCROLL CURSOR and do a FETCH NEXT. I am including the section of the stored procedure that works with the SCROLL CURSOR, but fails if a forward only (or sequential) CURSOR is used. Is this a bug and if so, is it fixed in SQL Server7? Code segment follows:<BR><BR>DECLARE CursorSettle SCROLL CURSOR<BR><BR>FOR<BR><BR><BR><BR>-- status = 1 is pending not processed<BR><BR>-- type = 124 is a settled transaction in trans_base<BR><BR>-- we are allowing 24 hours for an auth to settle<BR><BR><BR><BR>SELECT at.consumer_id, at.time, at.amount, at.trans_id, at.status<BR><BR>FROM account_trans at, trans_base tb<BR><BR>WHERE at.status = 1<BR><BR> AND at.trans_id = tb.trans_id<BR><BR> AND tb.type &#060;&#062; 12<BR><BR> AND DATEDIFF(hour, at.time, GETDATE()) &#062; 24<BR><BR><BR><BR><BR><BR>OPEN CursorSettle<BR><BR>FETCH FIRST FROM CursorSettle INTO @consumer_id, @time, @amount, @trans_id, @status<BR><BR><BR><BR>-- Now loop through them all<BR><BR>-- -1 is EOF, -2 is deleted or missing record, do not process<BR><BR><BR><BR><BR><BR>WHILE @@FETCH_STATUS != -1<BR><BR>BEGIN<BR><BR> IF @@FETCH_STATUS = -2 GOTO on_ok<BR><BR><BR><BR> BEGIN TRANSACTION<BR><BR><BR><BR> INSERT INTO account_trans (consumer_id, time, amount, trans_id, status)<BR><BR> VALUES (@consumer_id, GETDATE(), @amount, @trans_id, 5)<BR><BR> <BR><BR> IF (@@ERROR&#060;&#062;0) GOTO on_error<BR><BR><BR><BR> UPDATE account_trans<BR><BR> SET status=2<BR><BR> WHERE consumer_id = @consumer_id<BR><BR> AND status = 1<BR><BR><BR><BR><BR><BR> IF (@@ERROR&#060;&#062;0) GOTO on_error<BR><BR><BR><BR> UPDATE account_info<BR><BR> SET pending = pending - CONVERT(int, @amount)<BR><BR> WHERE consumer_id = @consumer_id<BR><BR><BR><BR> IF (@@ERROR&#060;&#062;0) GOTO on_error<BR><BR><BR><BR> COMMIT TRANSACTION<BR><BR> GOTO on_ok<BR><BR>on_error:<BR><BR> ROLLBACK TRANSACTION<BR><BR><BR><BR>on_ok:<BR><BR> FETCH NEXT FROM CursorSettle INTO @consumer_id, @time, @amount, @trans_id, @status<BR><BR>END<BR><BR>CLOSE CursorSettle<BR><BR>DEALLOCATE CursorSettle