当前位置: 代码迷 >> Sql Server >> (50分求解)存储过程中定义了varchar(1000),为什么调试时字符串被截断?该如何解决
  详细解决方案

(50分求解)存储过程中定义了varchar(1000),为什么调试时字符串被截断?该如何解决

热度:397   发布时间:2016-04-27 16:52:38.0
(50分求解)存储过程中定义了varchar(1000),为什么调试时字符串被截断?
存储过程定义了以下变量:
declare   @sql   varchar(1000)

set   @sql= 'insert   tmp   select   *   from   (select     distinct   i.*   from   zd   z,im   i   where   (charindex(i.from,z. '[email protected]+ ')> 0   or   charindex(i.to,z. '[email protected]+ ')> 0)   and   len(z. '[email protected]+ ')> '[email protected]+ '   and   i.imtype= '[email protected]+ ')   i1   where   not   exists(select   *   from   imtmp   i   where   i.ac=i1.ac   and   i.ime=i1.time   and   isnull(i.cont, ' ' ' ' ' ')=isnull(i1.cont, ' ' ' ' ' ')   and   i.dest=i1.dest   and   i.from=i1.from   and   i.type=i1.type   and   i.src=i1.src   and   i.to=i1.to) '

以上这段insert代码在分析器中执行一点问题都没有,但将其变为存储过程就发现字符串被截断了。调试[email protected],后面的字符都没了,怎么回事?

------解决方案--------------------
isnull(i.cont, ' ' ' ' ' ')=isnull(i1.cont, ' ' ' ' ' ')
这里有问题,应该是isnull(i.cont, ' ' ' ')=isnull(i1.cont, ' ' ' ')
  相关解决方案