Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Conversion d'un paramètre à valeurs multiples en table temporaire dans SQL Server Business Intelligence Development Studio

Comme cela a été indiqué, vous avez besoin d'une sorte de fonction de fractionnement, pour analyser les performances de diverses méthodes Séparer les chaînes de la bonne façon - ou de la meilleure façon suivante est une excellente lecture. Une fois que vous avez votre fonction, vous devez ensuite définir votre paramètre de requête sous forme de chaîne plutôt que de table :

Ainsi, votre requête deviendrait :

DECLARE @pEmails TABLE (EmailAddress varchar(255));

INSERT @pEmails (EmailAddress)
SELECT  Value
FROM    dbo.Split(@pEmallString);

Allez ensuite dans les propriétés de votre jeu de données, et au lieu de passer le paramètre multivaleur @pEmails au jeu de données, créez-en un nouveau à la place @pEmailString , et définissez la valeur en tant qu'expression, qui doit être :

=Join(Parameters!pEmails.Value, ",")

Cela transforme votre paramètre à plusieurs valeurs en une seule chaîne délimitée par des virgules. Il semble assez rétrograde que vous ayez besoin de le convertir en une chaîne délimitée, pour ensuite le diviser en SQL, malheureusement je ne connais pas de meilleur moyen.