Converts an array of string into a table.



/* create function */
CREATE FUNCTION [dbo].[IntIDToTable] 
	(@vc_Ids       varchar(1000),
     @vc_sperator char(1)
     )
-- Author Krishan Gurusinghe
-- Remark : This function takes a list if indexes in the form of a string variable and then returns 
--          a table data type variable used for a select * from D in (select ID from intIDToTable(@d)
--
RETURNS @IDTable TABLE
	(Id   numeric(18,0))
BEGIN 
	DECLARE @in_Index1 AS INT,   --Used to store EmployeeID delimiter(',') position in string
		@vc_AnyId AS VARCHAR(15)	
	
	
	/* initialize working variables */
	SET @in_Index1    	= CHARINDEX(@vc_sperator,@vc_Ids)

	/* loop through facility ids in delimited string */
	WHILE (@in_Index1 > 0 OR LEN(@vc_Ids) > 0)
	BEGIN
		/* parse out single facility id for processing */
		IF @in_Index1 > 0 
		BEGIN
		  SET @vc_AnyId = Left(@vc_Ids,@in_Index1 - 1)
		  SET @vc_Ids = Right(@vc_Ids,Len(@vc_Ids) - @in_Index1)
		END
		ELSE
		BEGIN
		  SET @vc_AnyId = @vc_Ids
		  SET @vc_Ids = ''
		END

		INSERT @IDTable (Id)
		VALUES(CAST(@vc_AnyId AS numeric(18,0)))

		/* prepare to loop */
		SET @in_Index1 = CHARINDEX(@vc_sperator,@vc_Ids)
	
	END

		
        /* return the facility ids */
    	RETURN 
END
GO

Comments