SQL语法转换错误与神秘数据

时间:2011-09-16 16:14:52

标签: sql sql-server tsql sql-server-2000

我在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]

3 个答案:

答案 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返回'..................'。我已经更改了我正在插入的值,现在我不再收到该错误了。