Соответствующий тип данных .Net для десятичных чисел (20,0)

StackOverflow https://stackoverflow.com/questions/808756

  •  03-07-2019
  •  | 
  •  

Вопрос

У меня есть sql, возвращающий тип данных десятичный (20,0).В SSIS у меня есть пакет с циклом foreach.В моих сопоставлениях переменных с каким типом переменных я бы их сопоставил?Я пробовал Int32, Int64, double, но все равно получаю сообщение об ошибке: «Тип значения, присваиваемого переменной «User::iID», отличается от текущего типа переменной...»

Это было полезно?

Решение

В моем случае конструктор переменных SSIS не показывал типы данных Decimal или Numeric, в которые можно было бы поместить мое десятичное (18,2) значение.

Я изменил свою переменную на Object и смог прочитать значение Decimal(18,2) из ​​набора результатов одной хранимой процедуры и передать его в качестве параметра с типом Money второму SP.

Поэтому я бы использовал «Объект», если вы не можете найти в списке переменных тип, который вам подходит.

Другие советы

Вы уже пробовали Decimal?

В SSIS есть десятичные и числовые типы.Вы можете использовать любой из них, и он пройдет (за исключением, может быть, Union All, где вы должны убедиться, что они имеют одинаковую точность и масштаб).

Подробнее о типах данных здесь.

В десятичной системе .NET есть методы десятичный.ToInt64(), десятичный.ToInt32() и т. д.

Я бы порекомендовал число с плавающей запятой или десятичное число.

Десятичное число SQL (20,0) имеет точность 20, что соответствует 13 байтам памяти.Десятичное число .Net составляет 16 байт и должно работать.

Вам нужно будет преобразовать тип данных SQL в Int64, прежде чем помещать его в переменную пакета Int64.

Как вы его получаете в качестве выходного параметра?

В потоке данных вы, очевидно, прочитаете его в десятичном/числовом виде, а затем преобразуете в Int64 в компоненте преобразования данных.

Если вы пытаетесь напрямую сопоставить выходной параметр из задачи «Выполнение команды SQL», вам, вероятно, придется использовать временную переменную пакета объекта, а затем преобразовать ее в задаче сценария в реальную переменную пакета Int64.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top