日期:2014-05-18  浏览次数:20465 次

SQL中拼接字符串为什么要转换为数值
我在使用储存过程来插入记录,并产生相应的编号,可是在实行存储过程中出错

SQL code

Declare @mcode varchar(20),@id int
SELECT @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 会报错