显式转换,但从数据类型' VARCHAR'获得"隐式转换到' INT'不允许"

时间:2014-12-30 20:58:38

标签: sybase

就像这个问题中的海报(Sybase Error Implicit Conversion from datatype 'VARCHAR' to 'INT' not allowed)一样,我有一个脚本在尝试存储它们之前显式地将所有字符转换为int。实际上,该脚本在测试Sybase服务器上运行完美。但是当我在生产中运行它时,我得到了可怕的错误:

Implicit conversion from datatype 'VARCHAR' to 'INT' is not allowed.  Use the CONVERT function to run this query.

一个复杂因素:我无法直接在生产服务器上运行脚本。我必须使用内部实用程序,该实用程序旨在记录所有生产更新以实现数据安全性目的。它有问题,所以问题可能是我的脚本触发的一些边缘情况 - 在这种情况下,我只是放弃并手动插入记录。但是我想确定我没有明显缺少的东西。

declare @Year int, @Bill_Run_No int
select @Year = 2015, @Bill_Run_No = 3501
-- Add a new year's worth of Bill_Run_Cntl records

declare @BegDate datetime, @EndDate datetime, @CurBillRunNo int, @MonthName varchar(3), @CurMonth int

/* Start with January and run for 12 months */
select @CurMonth = 1
while (@CurMonth < 13)
begin
    select @CurBillRunNo = @Bill_Run_No + @CurMonth - 1
    select @BegDate = CONVERT(datetime, convert(varchar, @Year) + '-' + convert(varchar, @CurMonth) + '-01')
    select @EndDate = DATEADD(MM, 1, @BegDate)
    select @MonthName = datename(MM, @BegDate)

    INSERT INTO REVDB..Bill_Run_Cntl
        (Bill_Run_No, Begin_Run_DtTm, End_Run_DtTm,
        Bill_Run_Desc,
        Bill_Period,
        Complete_Flag, Bill_Frequency, Bill_SW_Maint, Sales_Tax_Pass ) 
    select @CurBillRunNo, @BegDate, @EndDate,
        @MonthName + ' ' + convert(varchar, @Year) + ' Monthly',
        convert(varchar, @Year) + RIGHT('00' + CONVERT(varchar, @CurMonth), 2),
        NULL, 'P', NULL, 'A'

    select @CurMonth = @CurMonth + 1
end

编辑:根据请求,这是表定义的相关部分。 *字段允许空值。

Column_name        Type        Length
Bill_Run_No        int             4
Begin_Run_DtTm     datetime        8
End_Run_DtTm       datetime        8
Bill_Run_Desc      char           30
Bill_Period        char            6
Complete_Flag*     char            1
Bill_Frequency*    char            1
Bill_SW_Maint*     smallint        2
Sales_Tax_Pass*    char            1

0 个答案:

没有答案