我现在需要得到一个2100字节长度的字符串,在存储过程中,在循环体内使用了@str=@str+@mv的语句进行赋值。可是得到的结果却是:只要超过256字节,后面的结果就不对了!请问大侠们,我该如何处理,才能正确得到超过256字节的结果亚?

解决方案 »

  1.   

    @str是怎么声明的?
    declare @str varchar(8000)
      

  2.   

    以下是相关部分语句:declare @idx int
    declare @Ret_Nbr varchar(2100)
    declare @Ret_Id varchar(1000)
    declare @mv_Nbr char(21)
    declare @mv_Id char(10).......set @idx=0
    set @Ret_Nbr=''
    set @Ret_Id=''
    open #mm1  ----我定义的cursor
    fetch next from #mm1 into @mv_Nbr,@mv_Id
    while @@fetch_status=0
    begin
        if(@idx<100)
        begin
            set @Ret_Nbr=@Ret_Nbr+isnull(@mv_Nbr,'')
            set @Ret_Id=@Ret_Id+isnull(@mv_Id,'')
        end
        set @idx=@idx+1
        fetch next from #mm1 into @mv_Nbr,@mv_Id
    end......
      

  3.   

    declare @Sql varchar(512)构成cursor的查询语句肯定不会超过512字节
      

  4.   

    將用到組合的幾個變量的長度改長點,類似declare @Sql varchar(8000),試下
      

  5.   

    declare @str varchar(5000)
      

  6.   

    应该是声明的@str太小了,sql的最大字符长度是8000
      

  7.   

    在查询分析器工具—>选项 —>结果
      

  8.   

    對,是不是顯示的問題?打開查詢分析器,“工具”--> “結果” -->“每個資料行的最多字元數”,修改為8000試試 .
      

  9.   

    嗯,更让我郁闷了!按照上面的方法改了后,在查询分析器里面的结果正常了!可是,在我的程序里面接收到的SQL返回结果还是只有255字节!我察看了相关变量,其长度都是设置正确的亚!再看看