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

将截断字符串或二进制数据。是什么意思?查不出错来
DECLARE   caller_Cursor   CURSOR   FOR  
SELECT   hbid,caller   FROM   #haobai_all   where   owner=6   order   by   called,owner
OPEN   caller_Cursor  
declare   @id   int,   @caller   char(30)
FETCH   NEXT   FROM   caller_Cursor   INTO   @id,@caller
WHILE   @@FETCH_STATUS   =   0  
BEGIN  
select   @caller=ltrim(rtrim(@caller))
if(len(@caller)> 8)--------------------------就是这一行
select   @caller=substring(@caller,3,8)  

insert   into   #haobai_detail   select   o.fax,   o.cname,   t.called,   t.owner,   0,   t.cduration,   t.cf   from   #haobai_all   t   INNER   JOIN   CONTAINNUM   c   ON   CONVERT(int,   @caller)   > =   c.BeginNo   AND   convert(int,@caller)   <=   c.EndNo   INNER   JOIN   offi   o   ON   c.offname   =   o.offinum   where   (t.hbid=@id)


FETCH   NEXT   FROM   caller_Cursor   INTO   @id,@caller
END
CLOSE   caller_Cursor
DEALLOCATE   caller_Cursor  

那句查询里的convert改成转化为bigint也不行,出同样的错。

------解决方案--------------------
declare @id int, @caller char(30)

-->

declare @id int, @caller varchar(30)
------解决方案--------------------
把@caller的长度设置大一点
------解决方案--------------------
把@caller的长度设置大一点
tongyi
------解决方案--------------------
有一个字段你设置的长度小于要插入数据的长度,检查一下,找出那个字段改大些。