Pergunta

Eu tenho alguns SQL retornar um tipo de dados decimal (20,0). Em SSIS Eu tenho um pacote com um loop foreach. Em meus mapeamentos de variáveis, que tipo de variável gostaria de mapeá-lo para? Eu tentei Int32, Int64, duplos, e ainda obter o erro "O tipo do valor que está sendo atribuído à variável 'User :: IID' diferir do tipo variável atual ..."

Foi útil?

Solução

O designer variável SSIS não, no meu caso, mostrar os tipos de dados decimal ou numérico para selecionar colocar minha decimal (18,2) Valor em.

Eu mudei minha variável de objeto, e foi capaz de ler o Decimal valor (18,2) a partir do conjunto de resultados de um procedimento armazenado, e passá-lo como um parâmetro com o tipo de dinheiro para uma segunda SP.

Então, eu usaria "Objeto" se você não pode encontrar um tipo na lista de variáveis ??que funciona para você.

Outras dicas

Você já tentou Decimal ainda?

SSIS tem tipos decimais e numéricos. Você pode usar qualquer um desses e ele vai passar por (exceto, talvez, em uma União All, onde você deve se certificar de que eles são a mesma precisão e escala).

Veja mais sobre tipos de dados aqui .

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

Um flutuador ou um decimal seria a minha recomendação.

decimal Um SQL (20,0) tem uma precisão de 20, o que equivale a 13 bytes de armazenamento. O decimal Net é 16 bytes e deve funcionar.

Você precisa converter o tipo de dados SQL para um Int64 antes de colocá-lo em uma variável de pacote Int64.

Como você está recebendo-lo, como um parâmetro de saída?

Em um fluxo de dados, você obviamente lê-lo em um decimal / numérico e depois converter para Int64 em um componente de conversão de dados.

Se você está tentando mapear diretamente um parâmetro de saída de uma tarefa Executar comando SQL, você provavelmente vai ter que usar uma variável de pacote objeto temporário e, em seguida, convertê-lo em uma tarefa de script na variável real pacote de Int64.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top