Skip to navigation
How to pass a list or array to a mssql procedure "WHERE IN" query ?
04.02.15
example using php 1. convert the array into a string via implode $list = implode('|',$array); 2. send it as a string to the mssql procedure: $return = "exec zz_my_procedure_name @list='{$list}'"; 3. on the mssql server create a new function: CREATE FUNCTION MYDB.[dbo].[fnSplit]( @sInputList VARCHAR(8000) -- List of delimited items , @sDelimiter VARCHAR(8000) = ',' -- delimiter that separates items ) RETURNS @List TABLE (item VARCHAR(8000)) BEGIN DECLARE @sItem VARCHAR(8000) WHILE CHARINDEX(@sDelimiter,@sInputList,0) <> 0 BEGIN SELECT @sItem=RTRIM(LTRIM(SUBSTRING(@sInputList,1,CHARINDEX(@sDelimiter,@sInputList,0)-1))), @sInputList=RTRIM(LTRIM(SUBSTRING(@sInputList,CHARINDEX(@sDelimiter,@sInputList,0)+LEN(@sDelimiter),LEN(@sInputList)))) IF LEN(@sItem) > 0 INSERT INTO @List SELECT @sItem END IF LEN(@sInputList) > 0 INSERT INTO @List SELECT @sInputList -- Put the last item in RETURN END 4. than in your procedure use the WHERE IN with a select to your fnSplit function SELECT * FROM MYTABLE WHERE MYCOLUMN IN(SELECT item FROM fnSplit(@list, ‘|’))
http://stackoverflow.com/questions/337704/parameterize-a-sql-in-clause
Reply
Anonymous
Information Epoch 1760605753
Live free or die.
Home
Notebook
Contact us