Here is some samples on how to use cursors in SQL to do updates and deletes on records. Nothing fancy, just pure t-sql code. :)
Updating records using cursors
SET NOCOUNT ONDeclare @AccountNumber varchar(20)DECLARE AccountNumbers CURSOR FOR ( select AccountNumber from OldAccountsTable where AccountNumber between '0807200' and '0807999')OPEN AccountNumbers FETCH NEXT FROM AccountNumbers INTO @AccountId WHILE @@FETCH_STATUS = 0 BEGIN UPDATE AccountTable SET AccountType = 3 WHERE AccountNumber =@AccountNumber FETCH NEXT FROM AccountNumbers INTO @AccountNumber ENDCLOSE AccountNumbersDEALLOCATE AccountNumbers--EXAMPLE TWOSET NOCOUNT ONDeclare @AccountNumber varchar(20)DECLARE @SqlStatement varchar(8000)DECLARE AccountNumbers CURSOR FOR ( select AccountNumber from OldAccountsTable where AccountNumber between '0807200' and '0807999')OPEN AccountNumbers FETCH NEXT FROM AccountNumbers INTO @AccountId WHILE @@FETCH_STATUS = 0 BEGIN --SET THE STATEMENT TO EXECUTE SET @SqlStatement = 'UPDATE AccountTable SET AccountType = 3 WHERE AccountNumber =' + @AccountNumber --EXECUTE THE STATEMENT exec(@SqlStatement) --PRINT THE STATEMENT IF AN ERROR HAS BEEN ENCOUNTERED IF (@@ERROR <> 0) print @SqlStatement FETCH NEXT FROM AccountNumbers INTO @AccountNumber ENDCLOSE AccountNumbersDEALLOCATE AccountNumbers
Deleting records using cursors
-- EXAMPLE ONESET NOCOUNT ONDeclare @AccountNumber varchar(20)DECLARE AccountNumbers CURSOR FOR ( select AccountNumber from OldAccountsTable where AccountNumber between '0807200' and '0807999')OPEN AccountNumbers FETCH NEXT FROM AccountNumbers INTO @AccountId WHILE @@FETCH_STATUS = 0 BEGIN DELETE FROM AccountTable WHERE AccountNumber =@AccountNumber FETCH NEXT FROM AccountNumbers INTO @AccountNumber ENDCLOSE AccountNumbersDEALLOCATE AccountNumbers-- EXAMPLE TWOSET NOCOUNT ONDeclare @AccountNumber varchar(20)DECLARE AccountNumbers CURSOR FOR ( select AccountNumber from OldAccountsTable where AccountNumber between '0807200' and '0807999')OPEN AccountNumbers FETCH NEXT FROM AccountNumbers INTO @AccountId WHILE @@FETCH_STATUS = 0 BEGIN --SET THE STATEMENT TO EXECUTE SET @SqlStatement = 'DELETE FROM AccountTable WHERE AccountNumber=' @AccountNumber --EXECUTE THE STATEMENT exec(@SqlStatement) --PRINT THE STATEMENT IF AN ERROR HAS BEEN ENCOUNTERED IF (@@ERROR <> 0) print @SqlStatement FETCH NEXT FROM AccountNumbers INTO @AccountNumber ENDCLOSE AccountNumbersDEALLOCATE AccountNumbers
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.