请看SQL:
本人的意思是:从依次读取一张表里记录,从中提取部门ID与部门名称依次赋值给2个变量@Pno与@PName,然后整合成一条新的SQL语句赋给字符串变量@sqlText,结果@sqlText的值只有300个字符不到,而我表里的记录有9条左右,正常结果是500个字符左右,请教高手们这字符数为什么就只有300左右就上不去了?谢谢!! 
declare @sqlText varchar(2000) 
declare @Pno Varchar(2),@PName Varchar(10)
declare YYMX cursor for select PrinterNo,Description from MaPrinter
set @sqlText='select NoOfPeople as 人数,RetailNo as 单号,' 
open YYMX
FETCH NEXT FROM YYMX into @Pno,@PName
while(@@fetch_status =0 )
begin
    set @sqlText=@sqltext +'sum(case PrinterNo when '''+@Pno+''' then Amount else 0 end) as '''+@PName+''','
    FETCH NEXT FROM YYMX into @Pno,@PName
end
close YYMX
deallocate YYMX
select @sqlText 

解决方案 »

  1.   

    select len()
    显示的问题
    具体参考1楼
      

  2.   

    --这样试试
    declare @sqlText varchar(8000)  
    declare @Pno Varchar(2),@PName Varchar(10)
    set @sqlText='select NoOfPeople as 人数,RetailNo as 单号,' 
    declare YYMX cursor for select PrinterNo,Description from MaPrinter 
    open YYMX
    FETCH NEXT FROM YYMX into @Pno,@PName
    while(@@fetch_status =0 )
    begin
      set @sqlText=@sqltext +'sum(case PrinterNo when '''+@Pno+''' then Amount else 0 end) as '''+@PName+''','
      FETCH NEXT FROM YYMX into @Pno,@PName
    end
    close YYMX
    deallocate YYMX
    print @sqlText