SQL中拼接字符串为什么要转换为数值
我在使用储存过程来插入记录,并产生相应的编号,可是在实行存储过程中出错
- SQL code
Declare @mcode varchar(20),@id intSELECT @id = SCOPE_IDENTITY();set @mcode = '4406'+ convert(char(3),right(convert(char(5),@TypeID+10000),3))+ [color=#FF0000]convert(char(7),right((convert(char(9),@id+100000000)),7))[/color]UPDATE [MonitorInfo]SET [MonitorCode] = ''WHERE [MonitorID] = @id
消息 248,级别 16,状态 1,过程 InsertStore,第 52 行
转换 varchar 值 '44060010000026' 时溢出了整数列。超过了其中最大的整数值。
InsertStore过程试图返回状态 NULL,这是不允许的。将返回状态 0。
[解决办法]
楼主能不能贴全一点,把整个存储过程贴出来
[解决办法]
- SQL code
convert(char(7),right((convert(char(9),@id+100000000)),7))--你这里传入的@id=44060000000026了
[解决办法]
- SQL code
--你把那段代码这么写试试set @mcode = '4406'+ right(ltrim(@TypeID+10000),3)+right(ltrim(@id+100000000),7)
[解决办法]
这个是动态SQL的基本语法 都需要转换成VARCHAR型的才可以执行
如果是INT 会报错