2011-09-16 1 views
1

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

Syntax error converting the varchar value '...............' to a column of data type 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 

Таблица Схема для 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] 
+2

Можете ли вы показать нам свой SQL и структуру таблицы, в которую вы вставляете? –

+0

Вы отправили бы свою хранимую процедуру? – octopusgrabbus

+0

@Abe Miessler -See Edit. – MAW74656

ответ

0

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

0

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

+0

К сожалению, это не динамический, а просто оператор select. – MAW74656

0

Это должно быть вопрос:

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

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

SELECT CAST(SkidNumber as INT) 
FROM InventoryLocations 

Поскольку @iSkidFlagID является INT и SkidNumber является CHAR(15) он должен где ошибка происходит.

+0

-Изная ошибка. Я согласен, что это вероятная ошибка, но все, что передается, выглядит действительным. – MAW74656

+0

@ MAW74656, вы не можете полагаться на '@ iSkidFlagID' в предложении' WHERE', чтобы отфильтровать нечисловые строки SkidNumber. Если в SkidNumbers все равно количество цифр (маловероятно), вы можете использовать 'LIKE ([0-9] [0-9] [0-9])' (повторите [0-9] столько цифр, сколько У SKidNumbers есть). Вы также можете использовать 'WHERE ISNUMERIC (SkidNumber) = 1', но просто остерегайтесь того, что то, что SQL Server считает« числовым », необязательно всегда является числом. – Wil

+0

-IsNumeric (SkidNumber) = 1 не помогает, я попробую подобное заявление, но я согласен: возможно, не все одинаковое количество цифр – MAW74656

Смежные вопросы