Domanda

Ho alcuni sql che restituiscono un tipo di dati decimale (20,0). In SSIS ho un pacchetto con un ciclo foreach. Nei miei mapping delle variabili, a quale tipo di variabile dovrei mapparlo? Ho provato Int32, Int64, doppio e ancora ottengo l'errore "Il tipo del valore assegnato alla variabile" Utente :: iID " differisce dal tipo di variabile corrente ... "

È stato utile?

Soluzione

Il progettista delle variabili SSIS non ha mostrato, nel mio caso, i tipi di dati Decimali o Numerici da selezionare per inserire il mio valore decimale (18,2).

Ho cambiato la mia variabile in Object e sono stato in grado di leggere il valore Decimale (18,2) dal set di risultati di un proc memorizzato e passarlo come parametro con tipo Money a un secondo SP.

Quindi userei " Oggetto " se non riesci a trovare un tipo nell'elenco di variabili adatto a te.

Altri suggerimenti

Hai già provato Decimale?

SSIS ha tipi decimali e numerici. Puoi utilizzare uno di questi e verrà eseguito (tranne forse su un Union All, dove dovresti assicurarti che abbiano la stessa precisione e scala).

Ulteriori informazioni sui tipi di dati qui .

.NET decimal ha metodi decimal.ToInt64 () , decimal.ToInt32 () ecc.

Un float o un decimale sarebbe la mia raccomandazione.

Un decimale SQL (20,0) ha una precisione di 20 che equivale a 13 byte di memoria. Il decimale .Net è di 16 byte e dovrebbe funzionare.

Dovresti convertire il tipo di dati SQL in un Int64 prima di inserirlo in una variabile del pacchetto Int64.

Come lo ottieni, come parametro di output?

In un flusso di dati, ovviamente lo leggeresti in un decimale / numerico e poi lo convertiresti in Int64 in un componente di conversione dei dati.

Se stai provando a mappare direttamente un parametro di output da un'attività Esegui comando SQL, probabilmente dovrai utilizzare una variabile di pacchetto di oggetti temporanea e convertirla in un'attività di script nella variabile di pacchetto Int64 reale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top