Passage de plusieurs paramètres de valeur dans SSRS à une procédure stockée
Je suis en train de passer un multiple de la valeur de paramètre de chaîne à un type de table de paramètre dans un Serveur SQL server 2012 de la procédure stockée. Je colle ce code dans le jeu de données de SSRS:
DECLARE @mylist clinic_list_tbltype
INSERT @mylist(n) VALUES (@pm_ChooseClinics)
EXEC sp_Skillset_Summary_With_Callbacks_Report @mylist, @pm_ChooseInterval, @pm_StartDateTime, @pm_EndDateTime
clinic_list_tbltype est un type de table que j'ai créé avec un varchar(50) champ nommé "n". Je peux appeler cette procédure stockée à partir de SSMS.o.k. comme ceci (et il est très rapide):
DECLARE @mylist clinic_list_tbltype
INSERT @mylist(n) VALUES ('clinicA'), ('clinicB')
EXEC sp_Skillset_Summary_With_Callbacks_Report @mylist, 'Daily', '6/3/2014', '6/9/2014'
Je peux courir dans SSRS pour une seule clinique (mais très lentement), mais si j'essaie de plus que celui qu'il donne un message d'erreur indiquant que
il y a moins de colonnes dans l'instruction INSERT que les valeurs spécifiées
dans la clause values
. Même en cours d'exécution pour un clnic il fonctionne, mais il faut un temps très très long par rapport à l'exécution de la requête dans SSMS. Comme les 2 minutes et 1 seconde. Doit être parce que je suis de passage ('clinique', 'clinicB') au lieu de ('clinique'), ('clinicB').
Comment faire?
source d'informationauteur urbanmojo
Vous devez vous connecter pour publier un commentaire.
Droite, j'ai besoin de vous donner quelques fond 1er.
Si vous le permettez SSRS paramètre pour sélectionner plusieurs valeurs, La sélection de plusieurs valeurs crée une virgule deliminated de la chaîne de valeur sous forme de chaîne
Pour vérifier les valeurs dans une chaîne de caractères à l'aide de
IN
opérateur nous avons besoin de chaînes concaténées avec des virgules quelque chose comme cela ....Votre Proc
Maintenant dans votre proc lorsque vous insérez des valeurs explicitement qu'il insère plusieurs valeurs dans votre tableau.
et cela vous donne en retour les résultats attendus lorsque l'intérieur de votre procédure de l'exécution d'une instruction comme
D'autre part, si vous essayez d'insérer dans la table à l'aide de rapports SSRS Paramètre inserts de tableau de la valeur comme
Solution
La création de
TVP
dans cette situation ne marche pas vraiment aider, Ce que j'ai à faire est de faire usage dedbo.Split()
fonction à l'intérieur de ma procédure.Vous pouvez trouver de nombreuses définitions de fonction split en ligne, pour un certains frais ont un coup d'oeil ici
Fonction Split équivalent en tsql?
Une fois que vous avez créé cette fonction split il suffit d'utiliser cette fonction à l'intérieur de votre définition de la procédure, vous n'avez même pas besoin de la Table des paramètres, puis.
Quelque chose comme ça...