-- SQL server LOOP WITH LIST + WHILE
DECLARE @INPUT_LIST NVARCHAR(MAX) = '1,2, 3 ,,5'
DECLARE
@VALUE NVARCHAR(MAX)
,@VALUE_INT INT
,@SPLITS INT
,@START INT
,@END INT;
SET @INPUT_LIST = REPLACE(REPLACE( @INPUT_LIST ,CHAR(13),''),CHAR(10),'');
SET @SPLITS = (select len(@INPUT_LIST) - len(replace(@INPUT_LIST,',','')) +1)
---------===========
-- LOOP SPLITS
SET @END =0;
SET @INPUT_LIST = ','+ @INPUT_LIST +',';
DECLARE CURSOR_LOOP_SPLITS CURSOR FOR
SELECT NULL
OPEN CURSOR_LOOP_SPLITS;
FETCH NEXT FROM CURSOR_LOOP_SPLITS
WHILE @SPLITS >0
BEGIN
SET @SPLITS = @SPLITS -1;
SET @START = CHARINDEX(',',@INPUT_LIST,@END);
SET @END = CHARINDEX(',',@INPUT_LIST,@START+1);
SET @VALUE = TRIM( SUBSTRING(@INPUT_LIST,@START+1,@END-@START-1) );
IF (@END-@START >1)
BEGIN
--+++++++++++++++### START CODE ###+++++++++++++++--
SELECT @VALUE
--SET @VALUE_INT = CONVERT(INT,@VALUE);
--SELECT @VALUE_INT
--EXEC STOREDPROCEDURE @VALUE_INT
--+++++++++++++++### END CODE ###+++++++++++++++--
END
FETCH NEXT FROM CURSOR_LOOP_SPLITS
END;
CLOSE CURSOR_LOOP_SPLITS;
DEALLOCATE CURSOR_LOOP_SPLITS;
--------==========
------------------------------------------------------------------------
-- WHILE LOOP
DECLARE @I INT = 0
WHILE @I < 5
BEGIN
SET @I = @I + 1
SELECT @I
END