I use following to import Excel file to SQL Server.
The Excel file has all the values as string. I am able to import the file except Barcode
, SalePrice
and Price2
. I get error
Conversion of the nvarchar value '3001822585'(barcode) overflowed an int column
Code:
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();
Database::
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
How to cast the datatype in table valued parameter? Example will be appreciated.