C'est l'un des pauvres fonctionnalités prises en charge dans SQL Reporting Services.
Ce que vous devez faire est de passer tous vos articles sélectionnés comme une simple chaîne de votre procédure stockée. Chaque élément de la chaîne seront séparés par une virgule.
Ce que je puis faire est de diviser la chaîne en utilisant une fonction qui retourne la condition de chaîne en un tableau. Voir ci-dessous.
ALTER FUNCTION [dbo].[fn_MVParam]
(@RepParam nvarchar(4000), @Delim char(1)= ',')
RETURNS @Values TABLE (Param nvarchar(4000))AS
BEGIN
DECLARE @chrind INT
DECLARE @Piece nvarchar(100)
SELECT @chrind = 1
WHILE @chrind > 0
BEGIN
SELECT @chrind = CHARINDEX(@Delim,@RepParam)
IF @chrind > 0
SELECT @Piece = LEFT(@RepParam,@chrind - 1)
ELSE
SELECT @Piece = @RepParam
INSERT @Values(Param) VALUES(CAST(@Piece AS VARCHAR))
SELECT @RepParam = RIGHT(@RepParam,LEN(@RepParam) - @chrind)
IF LEN(@RepParam) = 0 BREAK
END
RETURN
END
Vous pouvez ensuite référence aux résultats dans la clause where de la requête comme ceci:
where someColumn IN(SELECT Param FROM dbo.fn_MVParam(@sParameterString,','))
J'espère que cela vous trouver cette solution pour être d'utilisation. N'hésitez pas à poser toutes les questions que vous pourriez avoir.
Cheers,John