Link to home
Start Free TrialLog in
Avatar of GlobaLevel
GlobaLevelFlag for United States of America

asked on

ms sql server - loop thru each id in a table

I have a unique id on each row of the table and I need to loop thru the whole table as it loops do some code

DECLARE @COUNT_BSP_ID NVARCHAR(MAX)
DECLARE @COUNTER INT

-- FIND HOW MANY BSP_ID IN TABLE
SET @COUNT_PARLAY_ID = (SELECT COUNT(PARLAY_ID) FROM PARLAY_NFL WHERE BSP_ID = @BSP_ID)
SET @COUNTER = 0



-- LOOP THRU TABLE DO CODE FOR EACH PARLAY_ID ON TABLE.. WHICH IS UNIQUE...
WHILE (@COUNTER < @COUNT_PARLAY_ID)
BEGIN

--DO SOME CODE PER EACH UNIQUE PARLAY_ID ON TABLE

 SET @COUNTER =  @COUNTER + 1

END
Avatar of brad2575
brad2575
Flag of United States of America image

Here you go:

DECLARE @TableID INT
      

set @TableID=(
      SELECT MIN(@TableID)
      FROM Table
)

WHILE IS NOT NULL

      BEGIN                  
            
            CodeHere

            set @TableID = (
                  SELECT MIN(@TableID)
                  FROM Table
                  WHERE TableID >@TableID
            )

      END
It's best if you could use a set based solution, but if you have to loop, I would do something like this.

Greg


DECLARE @COUNTER INT
DECLARE @PARLAY_ID

-- PUT THE DATA IN A TEMP TABLE AND ASSIGN EACH RECORD AN ID
SELECT ROW_NUMBER() OVER (ORDER BY PARLAY_ID) AS ROWID, PARLAY_ID
INTO #PARLAY_NFL 
FROM PARLAY_NFL 
WHERE BSP_ID = @BSP_ID)

SET @COUNTER = 0

-- LOOP THRU TABLE DO CODE FOR EACH PARLAY_ID ON TABLE.. WHICH IS UNIQUE...
WHILE (@COUNTER <= (SELECT MAX(ROWID) FROM #PARLAY_NFL))
BEGIN

 --GET THE NEXT PARLAY_ID
 SELECT @PARLAY_ID = PARLAY_ID FROM #PARLAY_NFL WHERE ROWID = @COUNTER

--DO SOME CODE PER EACH UNIQUE PARLAY_ID ON TABLE

 SET @COUNTER =  @COUNTER + 1

END

Open in new window

Avatar of GlobaLevel

ASKER

Greg...
not sure what you mean by set based?
ASKER CERTIFIED SOLUTION
Avatar of mimran18
mimran18
Flag of United Arab Emirates image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial