2015-09-15 3 views
0

У меня есть хранимая процедура, которая вставляет значения в таблицу:Ошибка арифметического переполнения для smallint - но тип данных int?

ALTER PROCEDURE [dbo].[spSaveAddresses_LegalDescriptions_Determinations] 
    @idAddresses_LegalDescriptions_Determinations INT = NULL OUTPUT, 
    @idLogin INT = -32768, 
    @idAddress INT = NULL, 
    @idLegalDescription INT = NULL, 
    @idDetermination INT = NULL 
AS 
    SET NOCOUNT ON 
    SET ROWCOUNT 0 
    SET XACT_ABORT ON 

    BEGIN TRY 
     /* Declare and initialize variables */ 
     DECLARE @RC   INT, 
       @TranCount INT 

     SELECT  
      @RC = 0, 
      @TranCount = @@TRANCOUNT 

     /* Insert record into Table #1] */ 
     IF @TranCount = 0 
     BEGIN TRANSACTION 
     BEGIN 
      INSERT INTO [TOD].[dbo].[Table#1](idAddress, idLegalDescription, 
              idDetermination, UpdatedidLogin, 
              UpdatedDate) 
      VALUES(@idAddress, @idLegalDescription, 
        @idDetermination, @idLegalDescription, GETDATE()) 
    END 

    IF @TranCount = 0 AND (XACT_STATE()) = 1 
     COMMIT TRANSACTION 
END TRY 

BEGIN CATCH 
IF (XACT_STATE()) = -1 ROLLBACK TRANSACTION 
    EXEC [TOD].[dbo].[spRethrowError] 
    SET @RC = 1 
END CATCH 

SET NOCOUNT OFF 
SET ROWCOUNT 0 
RETURN @RC 
GO 

Структура таблицы № 1:

CREATE TABLE [dbo].[Addresses_LegalDescriptions_Determinations] 
(
    [idAddresses_LegalDescriptions_Determinations] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL, 
    [idAddress] [int] NULL, 
    [idLegalDescription] [int] NULL, 
    [idDetermination] [int] NULL, 
    [UpdatedidLogin] [smallint] NOT NULL 
     CONSTRAINT [DF_Addresses_LegalDescriptions_Determinations_UpdatedidLogin] DEFAULT ((0)), 
    [UpdatedDate] [datetime] NOT NULL, 

    CONSTRAINT [pkAddresses_LegalDescriptions_Determinations] 
     PRIMARY KEY CLUSTERED ([idAddresses_LegalDescriptions_Determinations] ASC) 
) ON [DATA] 
GO 

ALTER TABLE [dbo].[Addresses_LegalDescriptions_Determinations] WITH NOCHECK 
    ADD CONSTRAINT [FK_Addresses_LegalDescriptions_Determinations_Addresses] 
     FOREIGN KEY([idAddress]) 
     REFERENCES [dbo].[Addresses] ([idAddress]) 
      ON DELETE CASCADE 
      NOT FOR REPLICATION 
GO 

ALTER TABLE [dbo].[Addresses_LegalDescriptions_Determinations] 
     CHECK CONSTRAINT [FK_Addresses_LegalDescriptions_Determinations_Addresses] 
GO 

ALTER TABLE [dbo].[Addresses_LegalDescriptions_Determinations] WITH NOCHECK 
ADD CONSTRAINT [FK_Addresses_LegalDescriptions_Determinations_Determinations] 
    FOREIGN KEY([idDetermination]) 
    REFERENCES [dbo].[Determinations] ([idDetermination]) 
ON DELETE CASCADE 
NOT FOR REPLICATION 
GO 

ALTER TABLE [dbo].[Addresses_LegalDescriptions_Determinations] CHECK CONSTRAINT [FK_Addresses_LegalDescriptions_Determinations_Determinations] 
GO 

ALTER TABLE [dbo].[Addresses_LegalDescriptions_Determinations] WITH NOCHECK ADD CONSTRAINT  [FK_Addresses_LegalDescriptions_Determinations_LegalDescriptions] FOREIGN KEY([idLegalDescription]) 
REFERENCES [dbo].[LegalDescriptions] ([idLegalDescription]) 
ON DELETE CASCADE 
NOT FOR REPLICATION 
GO 

ALTER TABLE [dbo].[Addresses_LegalDescriptions_Determinations] CHECK CONSTRAINT [FK_Addresses_LegalDescriptions_Determinations_LegalDescriptions] 
GO 

Структура таблицы вызывает ошибку:

CREATE TABLE [dbo].[LegalDescriptions](
[idLegalDescription] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL, 
[LotNumber] [varchar](15) NULL, 
[BlockNumber] [varchar](15) NULL, 
[SubDivision] [varchar](255) NULL, 
[UpdatedDate] [datetime] NOT NULL, 
[InsertedDate] [datetime] NULL, 
[SubDivisionPhase] [varchar](5) NULL, 
[Township] [varchar](20) NULL, 
[UpdatedidLogin] [smallint] NOT NULL CONSTRAINT [DF_LegalDescriptions_UpdatedidLogin] DEFAULT ((0)), 
[InsertedIDLogin] [smallint] NULL, 
[LegalDescription] [varchar](255) NULL, 
[PinNumber] [varchar](30) NULL, 
[Range] [varchar](15) NULL, 
[SectionLegalDescription] [varchar](15) NULL, 
CONSTRAINT [pkLegalDescriptions] PRIMARY KEY CLUSTERED 
(
    [idLegalDescription] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [DATA] 
) ON [DATA] 

GO 

SET ANSI_PADDING OFF 
GO 

Ошибка, которую я получаю, когда пытаюсь выполнить хранимую процедуру:

Msg 50000, Level 16, State 1, Procedure spRethrowError, Line 42
Error 220, Level 16, State 1, Procedure spSaveAddresses_LegalDescriptions_Determinations, Line 42
Message: Arithmetic overflow error for data type smallint, value = 171922.

Мой вопрос:

Все типы данных для этого столбца, проливает ошибка [idLegalDescription] являются INT, почему это stored procedure призывают к типу smallint данных? Я уверен, что это просто, что мне не хватает.

ответ

3

Ваш столбец

[UpdatedidLogin] [smallint] 

населен

@idLegalDescription        INT 
+0

WOW! Какая ужасная опечатка. Я знал, что это так просто. Дерьмо, спасибо! Я приму это как ответ, как только истечет время. – alybaba726

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