Question

J'ai certains SQL qui retournent un type de données décimal (20,0). Dans SSIS, j'ai un paquet avec une boucle foreach. Dans mes mappages de variables, à quel type de variable le mapperais-je? J'ai essayé Int32, Int64, double et j'obtiens toujours l'erreur "Le type de la valeur attribuée à la variable" Utilisateur :: iID ". diffère du type de variable actuel ... "

Était-ce utile?

La solution

Le concepteur de variables SSIS n'a pas, dans mon cas, affiché les types de données Décimal ou Numérique à sélectionner pour placer ma valeur décimale (18,2).

J'ai changé ma variable en Object et je pouvais lire la valeur Decimal (18,2) du jeu de résultats d'un processus stocké et la transmettre en tant que paramètre de type Money à un second SP.

J'utiliserais donc " Objet " si vous ne trouvez pas dans la liste de variables un type qui vous convient.

Autres conseils

Avez-vous déjà essayé Decimal?

SSIS possède des types décimaux et numériques. Vous pouvez utiliser l’un ou l’autre de ces modes et le tout ira de l’avant (sauf peut-être sur une Union All, où vous devez vous assurer qu’ils ont la même précision et la même échelle).

En savoir plus sur les types de données ici .

Le nombre décimal .NET a les méthodes decimal.ToInt64 () , decimal.ToInt32 () , etc.

Un flottant ou une décimale serait ma recommandation.

Une décimale SQL (20,0) a une précision de 20, ce qui équivaut à 13 octets de stockage. La décimale .Net est de 16 octets et devrait fonctionner.

Vous devez convertir le type de données SQL en un fichier Int64 avant de le placer dans une variable de package Int64.

Comment l'obtenez-vous en tant que paramètre de sortie?

Dans un flux de données, vous devez évidemment le lire en décimal / numérique, puis le convertir en Int64 dans un composant de conversion de données.

Si vous essayez de mapper directement un paramètre de sortie à partir d'une tâche d'exécution de commande SQL, vous devrez probablement utiliser une variable de package d'objet temporaire, puis la convertir dans une tâche de script en une variable de package Int64 réelle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top