我在SQL Server 2000存储过程中收到此消息:
将varchar值'...............'转换为a的语法错误 数据类型为int。
的列
基本上我正在尝试插入数据并在现有的存储过程中使用它,因此我可能会插入错误的数据,但我不会插入'............ ......'在任何地方,我无法找到相关的任何地方。
麻烦的是,我在桌子的任何地方都找不到'...............'我正在查询。如何找到此错误的来源?
修改
部分存储过程抛出错误:
Select @iFromLocationID = IsNull(RecID,0)
From InventoryLocations
Where LocItemNumber = @vItemNumber
And IsNull(SkidNumber,'') <> ''
And Cast(SkidNumber as int) = @iSkidFlagID
And Warehouse = @cFromWarehouse
And Aisle = @cFromAisle
And Slot = @cFromSlot
And locLevel = @cFromLevel
And Bin = @cFromBin
InventoryLocations的表格模式:
CREATE TABLE [dbo].[InventoryLocations](
[recid] [int] IDENTITY(1,1) NOT NULL,
[LocItemNumber] [char](16) NOT NULL,
[WareHouse] [char](2) NOT NULL,
[Aisle] [char](3) NOT NULL,
[Slot] [char](3) NOT NULL,
[locLevel] [char](2) NOT NULL,
[Bin] [char](2) NOT NULL,
[Extra] [char](2) NOT NULL,
[LocNumber] [char](2) NOT NULL,
[RollNumber] [char](20) NOT NULL,
[QuickRoll] [int] NOT NULL,
[SkidNumber] [char](15) NOT NULL,
[RollsInStock] [int] NOT NULL,
[LocQtyOnHand] [float] NOT NULL,
[LocQtyOnOrder] [float] NOT NULL,
[LocQtyCommited] [float] NOT NULL,
[TotalReceived] [float] NOT NULL,
[TotalIssued] [float] NOT NULL,
[TotalDollars] [float] NOT NULL,
[Capacity] [float] NOT NULL,
[AvailableSpace] [float] NOT NULL,
[bkey0] [char](30) NULL,
[bkey1] [char](30) NULL,
[bkey2] [char](30) NULL,
[bkey3] [char](14) NULL,
[LastPhysicalCountDate] [datetime] NULL,
[LastCycleCountDate] [datetime] NULL,
[EnteredBy] [varchar](50) NULL,
[EnteredDateTime] [datetime] NULL,
CONSTRAINT [IX_InventoryLocations_1] UNIQUE NONCLUSTERED
(
[LocItemNumber] ASC,
[WareHouse] ASC,
[Aisle] ASC,
[Slot] ASC,
[locLevel] ASC,
[Bin] ASC,
[Extra] ASC,
[RollNumber] ASC,
[SkidNumber] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
答案 0 :(得分:0)
如果您正在构建动态sql,请在执行之前尝试打印查询。如果没有,请尝试在编辑器中单独运行存储过程中的查询。如果您有INSERT..SELECT,请尝试仅运行查询的SELECT部分。
答案 1 :(得分:0)
这必须是问题:
And IsNull(SkidNumber,'') <> ''
And Cast(SkidNumber as int) = @iSkidFlagID
尝试运行以下内容,看看是否收到错误:
SELECT CAST(SkidNumber as INT)
FROM InventoryLocations
由于@iSkidFlagID是INT
而SkidNumber是CHAR(15)
,因此它必须是发生错误的地方。
答案 2 :(得分:0)
看起来像null值导致SQL返回'..................'。我已经更改了我正在插入的值,现在我不再收到该错误了。