برای ارسال چندین آیتم به صورت یک رشته به ورودی یک استور پروسیجر ایتدا کوئری زیر را اجرا کنید تا استور پروسیجر ساخته شود:



ALTER PROCEDURE [dbo].[SP]
 
@param varchar(512)
 
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
    SELECT * FROM TABLENAME WHERE [COLUMN] IN 
           (SELECT splitdata FROM dbo.fnSplitString(@param, ','))
END


برای ساخت Function استفاده شده در کوئری بالا کوئری زیر را اجرا کنید:

CREATE FUNCTION [dbo].[fnSplitString] 
    @string NVARCHAR(MAX), 
    @delimiter CHAR(1) 
RETURNS @output TABLE(splitdata NVARCHAR(MAX) 
BEGIN 
    DECLARE @start INT, @end INT 
    SELECT @start = 1, @end = CHARINDEX(@delimiter, @string) 
    WHILE @start < LEN(@string) + 1 BEGIN 
        IF @end = 0  
            SET @end = LEN(@string) + 1
       
        INSERT INTO @output (splitdata)  
        VALUES(SUBSTRING(@string, @start, @end - @start)) 
        SET @start = @end + 1 
        SET @end = CHARINDEX(@delimiter, @string, @start)
        
    END 
    RETURN 
END
مانند مثال زیر 2 آیتم را به SP پاس می دهیم:

EXEC SP 'Indigo,Blue'
-------------------------------------------------------------------------------------------------------------------------------------------------------
منابع: