Преобразование значения nvarchar '3001822585' привело к переполнению столбца int

Я использую следующее для импорта файла Excel на SQL Server.

В файле Excel все значения представлены в виде строк. Я могу импортировать файл, кроме Barcode, SalePrice и Price2. я получаю сообщение об ошибке

Преобразование значения nvarchar '3001822585' (штрих-код) переполнило столбец int

Код:

         SqlCommand sqlcmd = new SqlCommand
         (@"MERGE Inventory AS target
         USING (SELECT
            LocalSKU, ItemName, QOH, Price, Discontinued,Barcode, Integer2
            ,Integer3, SalePrice, SaleOn, Price2 FROM @source)
            AS Source ON (Source.LocalSKU = target.LocalSKU)
           WHEN MATCHED THEN
           UPDATE 
           SET ItemName = source.ItemName,
           Price = source.Price,
           Discontinued = source.Discontinued,
           Barcode = source.Barcode,
           Integer2 = source.Integer2,
           Integer3 = source.QOH,
           SalePrice = source.SalePrice,
           SaleOn = source.SaleOn,
           Price2 = source.Price2;", sqlconn);

           SqlParameter param;
           param = sqlcmd.Parameters.AddWithValue("@source", dr);
           param.SqlDbType = SqlDbType.Structured;
           param.TypeName = "dbo.InventoryType";

           sqlconn.Open();
           sqlcmd.ExecuteNonQuery();
           sqlconn.Close();

База данных::

 LocalSKU varchar(200),
 ItemName varchar(200),
 QOH int,
 Price decimal(19,4),
 Discontinued bit,
 Barcode int,
 Integer2 int,
 Integer3 int,
 SalePrice decimal(19,4),
 SaleOn bit,
 Price2 decimal(19,4)

dbo.InventoryType is:

   CREATE TYPE [dbo].[InventoryType] AS TABLE
   (
      [LocalSKU] [varchar](200) NOT NULL,
      [ItemName] [varchar](200) NULL,
      [QOH] [int] NULL,
      [Price] [decimal](19, 4) NULL,
      [Discontinued] [bit] NULL,
      [Barcode] [varchar](25) NULL,
      [Integer2] [int] NULL,
      [Integer3] [int] NULL,
      [SalePrice] [decimal](19, 4) NULL,
      [SaleOn] [bit] NULL,
      [Price2] [decimal](19, 4) NULL
   )
   GO

Как преобразовать тип данных в табличный параметр? Пример будет оценен.


person user2525244    schedule 21.04.2014    source источник


Ответы (2)


Используйте тип данных unsignedInt.

int range - 4 bytes, -2,147,483,648 to +2,147,483,647 
unsignedInt range - 0 to 4,294,967,295 

Значение вашего штрих-кода 3001822585 превышает максимальное значение int 2 147 483 647, поэтому возникает ошибка

Изменить

unigned int не найдены в SQL Server, однако MySQL их поддерживает. Для SQL Server вам придется использовать bigINT.

bigInt range - 8 bytes -2^63 to 2^63-1 

Поэтому измените тип данных столбца Barcode на bigInt . Если вы считаете, что значения других столбцов могут превышать диапазон значений int, также измените их тип данных.

person Mudassir Hasan    schedule 21.04.2014

Заявление SQL:

SELECT max( Mother_ID)+1 FROM Mother

http://i.stack.imgur.com/ACKAW.jpg Сообщение 248, уровень 16, состояние 1, строка 1 Преобразование значения nvarchar '182512900911500120' привело к переполнению столбца int.

Проблема вызвана тем, что число 182512900911500120 превышает диапазон целых чисел. Если мы конвертируем в bigint, это работает.

i.e.

SELECT max(convert(bigint,Mother_ID))+1 as MID FROM Mother

http://i.stack.imgur.com/ZLSNR.jpg Результат 182512900911500121

person Samiran Nath    schedule 03.02.2016