[SQL Server] Limiter le nombre de valeurs passées dans une paramètre SSRS

-- =============================================

-- Author         : Zouhaier KHARROUBI

-- Create date    : 01/02/2017

-- Description    : Limiter le nombre de valeurs passées dans une paramètre SSRS

-- Dans notre cas d'exemple le nombre de valeurs passées dans une paramètre SSRS a été limité à 10 valeurs

-- =============================================

DECLARE       @Indice                          INT

            ,@Position                         INT

            ,@Parametres                       VARCHAR(MAX)

            ,@Nbre_Parametres                  INT

            ,@Nbre_Parametres_Autorise         INT

            ,@Position_Precedente              INT           

SELECT       @Indice                     = 1

            ,@Position                   = 1

            ,@Nbre_Parametres            = 0

            ,@Nbre_Parametres_Autorise   = 10

-- Afin d'eviter les lenteurs le système ne traitera que les 10 premiers articles selectionnés

WHILE @Indice <= @Nbre_Parametres_Autorise

      BEGIN

            SELECT @Position = CHARINDEX(',',@Parametres,@Position + 1)           

            IF @Position = 0

                  BEGIN

                        SELECT @Indice = @Nbre_Parametres_Autorise

                  END

            ELSE

                  BEGIN

                        SELECT @Nbre_Parametres = @Nbre_Parametres + 1

                        SELECT @Position_Precedente = @Position

                  END                 

            SELECT @Indice = @Indice + 1

      END     

IF @Nbre_Parametres < @Nbre_Parametres_Autorise

      BEGIN

            SELECT @Position_Precedente = LEN(@Parametres) + 1

      END

SELECT @Parametres = SUBSTRING(@Parametres,0,@Position_Precedente)