Splits a delimited string of Id into table rows

CREATE FUNCTION [dbo].[fn_SplitStructureIds]
(
 @IDs VARCHAR(4096)
)
RETURNS @SplittedIds TABLE
(StructureId INT ) 
AS
BEGIN
	DECLARE @SplitLength INT
        DECLARE @StructureId INT
        DECLARE @ViewStructureId INT
        DECLARE @PublicationId INT

	WHILE LEN(@IDs) > 0 
	BEGIN 
		SELECT @SplitLength = (CASE CHARINDEX(',',@IDs) WHEN 0 THEN 
		LEN(@IDs) ELSE CHARINDEX(',',@IDs) -1  END) 

        SET @StructureId = SUBSTRING(@IDs,1,@SplitLength)

        INSERT INTO @SplittedIds VALUES (@StructureId)

        SELECT @IDs = (CASE (LEN(@IDs) - @SplitLength) WHEN 0 THEN '' 
			ELSE RIGHT(@IDs, LEN(@IDs) - @SplitLength - 1) END) 
	END 

	RETURN 
END