我在使用储存过程来插入记录,并产生相应的编号,可是在实行存储过程中出错
Declare @mcode varchar(20),@id int
SELECT @id = SCOPE_IDENTITY();set @mcode = '4406'+ 
convert(char(3),right(convert(char(5),@TypeID+10000),3))+ 
convert(char(7),right((convert(char(9),@id+100000000)),7))UPDATE [MonitorInfo]
SET [MonitorCode] = ''
WHERE [MonitorID] = @id
消息 248,级别 16,状态 1,过程 InsertStore,第 52 行
转换 varchar 值 '44060010000026' 时溢出了整数列。超过了其中最大的整数值。
InsertStore过程试图返回状态 NULL,这是不允许的。将返回状态 0。

解决方案 »

  1.   


    convert(char(7),right((convert(char(9),@id+100000000)),7))
    --你这里传入的@id=44060000000026了
      

  2.   

    不过吧
    是经过拼接后的才是44060000000026
    我PRINT @id出来是27的
      

  3.   


    --你把那段代码这么写试试
    set @mcode = '4406'+ 
    right(ltrim(@TypeID+10000),3)+
    right(ltrim(@id+100000000),7)
      

  4.   


    set @mcode = '4'+ 
    right(convert(char(5),@TypeID+10000),3)
    + right((convert(char(9),@id+100000000)),5)改为这样可以,不过疑问是,我这里都是字符串来的,没有涉及的数值型的。
    不知道为什么会错误
    字段MonitorCode也是varchar(20)来的
      

  5.   

    这个是动态SQL的基本语法 都需要转换成VARCHAR型的才可以执行如果是INT 会报错