Pregunta

Tengo algunos sql que devuelven un tipo de datos decimal (20,0). En SSIS tengo un paquete con un bucle foreach. En mis asignaciones de variables, ¿a qué tipo de variable la asignaría? Intenté Int32, Int64, double, y aún obtengo el error "El tipo del valor que se asigna a la variable" Usuario :: iID " difiere del tipo de variable actual ... "

¿Fue útil?

Solución

El diseñador de variables SSIS, en mi caso, no mostró los tipos de datos decimales o numéricos para seleccionar para colocar mi valor decimal (18,2).

Cambié mi variable a Object y pude leer el valor Decimal (18,2) del conjunto de resultados de un proceso almacenado, y pasarlo como un parámetro con el tipo Money a un segundo SP.

Entonces usaría " Objeto " si no puede encontrar un tipo en la lista de variables que funcione para usted.

Otros consejos

¿Ya has probado Decimal?

SSIS tiene tipos decimales y numéricos. Puede usar cualquiera de estos y pasará (excepto tal vez en un Union All, donde debe asegurarse de que tengan la misma precisión y escala).

Obtenga más información sobre los tipos de datos aquí .

.

.NET decimal tiene métodos decimal.ToInt64 () , decimal.ToInt32 () etc.

Una coma flotante o un decimal sería mi recomendación.

Un decimal de SQL (20,0) tiene una precisión de 20 que equivale a 13 bytes de almacenamiento. El decimal .Net es de 16 bytes y debería funcionar.

Debería convertir el tipo de datos SQL a Int64 antes de colocarlo en una variable de paquete Int64.

¿Cómo lo obtienes, como parámetro de salida?

En un flujo de datos, obviamente lo leería en decimal / numérico y luego lo convertiría a Int64 en un componente de conversión de datos.

Si está intentando asignar directamente un parámetro de salida de una tarea Ejecutar comando SQL, probablemente tendrá que usar una variable de paquete de objeto temporal y luego convertirla en una tarea de script en la variable de paquete Int64 real.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top