• have you ever used a while loop in SQL.. i tend to use these over cursors these days and find they perform a lot better.

    here is a sample code showing a while loop:

    IF EXISTS (SELECT *

    FROM tempdb.dbo.sysobjects o

    WHERE o.xtype IN ('U')

    AND o.id = OBJECT_ID(N'tempdb..##TlbLog'))

    DROP TABLE ##TlbLog

    CREATE TABLE ##TlbLog

    (

    ID INT

    ,UserID INT

    ,Purpose VARCHAR(20)

    ,DateCreated DATETIME

    ,seen BIT DEFAULT 0

    )

    INSERT INTO ##TlbLog

    (ID, UserID, Purpose, DateCreated) VALUES

    (1, 500, 'login' ,'2013-03-24 14:39:43.273')

    ,(2, 501, 'login' ,'2013-03-24 14:39:43.277')

    ,(3, 502, 'login' ,'2013-03-24 14:39:43.277')

    ,(4, 503, 'login' ,'2013-03-24 14:39:43.277')

    ,(5, 500, 'logout' ,'2013-03-24 14:44:43.280')

    ,(6, 501, 'logout' ,'2013-03-24 14:44:43.280')

    ,(2, 501, 'login' ,'2013-03-24 14:55:43.277')

    ,(6, 501, 'logout' ,'2013-03-24 15:55:43.280')

    DECLARE @count INT

    ,@rowNumber INT

    ,@tblID INT

    ,@tblUserID INT

    ,@tblPurpose VARCHAR(20)

    ,@tblDateCreated DATETIME

    SELECT @count = COUNT(*), @rowNumber = 1 FROM ##TlbLog

    WHILE @count >=@rowNumber

    BEGIN

    SELECT TOP 1 @tblID = ID

    ,@tblUserID = UserID

    ,@tblPurpose = Purpose

    ,@tblDateCreated = DateCreated

    FROM ##TlbLog

    WHERE seen = 0

    --do whatever your looking to do

    UPDATE ##TlbLog SET seen = 1 WHERE id = @tblID

    SET @rowNumber = @rowNumber+1

    END

    SELECT *

    FROM ##TlbLog