我在使用储存过程来插入记录,并产生相应的编号,可是在实行存储过程中出错
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。
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。
convert(char(7),right((convert(char(9),@id+100000000)),7))
--你这里传入的@id=44060000000026了
是经过拼接后的才是44060000000026
我PRINT @id出来是27的
--你把那段代码这么写试试
set @mcode = '4406'+
right(ltrim(@TypeID+10000),3)+
right(ltrim(@id+100000000),7)
set @mcode = '4'+
right(convert(char(5),@TypeID+10000),3)
+ right((convert(char(9),@id+100000000)),5)改为这样可以,不过疑问是,我这里都是字符串来的,没有涉及的数值型的。
不知道为什么会错误
字段MonitorCode也是varchar(20)来的