Ошибка преобразования синтаксиса SQL с загадочными данными - PullRequest
1 голос
/ 16 сентября 2011

Я получаю это сообщение в хранимой процедуре SQL Server 2000:

Синтаксическая ошибка преобразования значения varchar '...............' встолбец типа данных int.

В основном я пытаюсь вставить данные и использовать их в существующей хранимой процедуре, поэтому возможно, что я вставляю неверные данные, но я не вставляю'...............' нигде, и я не могу найти что-либо связанное.

Проблема в том, что я не могу найти "............... 'где-нибудь в таблице, к которой я обращаюсь. Как я могу найти источник этой ошибки?

EDIT

Часть сгенерированной ошибки хранимой процедуры:

  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 

Схема таблицы для местоположений инвентаризации:

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 голосов
/ 16 сентября 2011

Это должно быть проблемой:

 And IsNull(SkidNumber,'') <> ''
 And Cast(SkidNumber as int) = @iSkidFlagID

Попробуйте выполнить следующее и посмотрите, если вы получите ошибку:

SELECT CAST(SkidNumber as INT)
FROM InventoryLocations

Так как @iSkidFlagID является INT и SkidNumberCHAR(15) должно быть там, где происходит ошибка.

0 голосов
/ 16 сентября 2011

Похоже, что нулевое значение заставляло SQL возвращать '..................'.Я изменил значения, которые я вставляю, и теперь я больше не получаю эту ошибку.

0 голосов
/ 16 сентября 2011

Если вы создаете динамический sql, попробуйте распечатать запрос перед его выполнением.Если нет, попробуйте выполнить запросы в хранимой процедуре отдельно в редакторе.Если у вас есть INSERT..SELECT, попробуйте выполнить только часть запроса SELECT.

...