まず、分割機能が必要です(SQL Serverを使用していると仮定します)。あなたはインターネット上のこれらのすべてを見つけることができます、これは私が使用するものです。
CREATE FUNCTION [dbo].[udf_Split]
( @List varchar(8000),
@Delimiter varchar(5)
)
RETURNS @TableOfValues table
( RowID smallint IDENTITY(1,1),
[Value] varchar(100)
)
AS
BEGIN
DECLARE @LenString int
WHILE len(@List) > 0
BEGIN
SELECT @LenString =
(CASE charindex(@Delimiter, @List)
WHEN 0 THEN len(@List)
ELSE (charindex(@Delimiter, @List) -1)
END
)
INSERT INTO @TableOfValues
SELECT substring(@List, 1, @LenString)
SELECT @List =
(CASE (len(@List) - @LenString)
WHEN 0 THEN ''
ELSE right(@List, len(@List) - @LenString - 1)
END
)
END
RETURN
END
次に、あなたはこれにあなたのストアドプロシージャ内でwhere句を変更することができます。
WHERE dept_name IN (SELECT value FROM dbo.udf_Split(@dname, ','))
また、これは、ストアドプロシージャとUDFが同じデータベースにあることを前提としています。
データセットで選択したものはありますか? –