declare @entName varchar(500)
    set @entName='宁波hangzhou'
    declare @str varchar(200)
    
    declare @i int
    set @i=1
    while @i<=len(@entName)
      select @str=substring(@entName,@i,1)
      print @str
      set @i=@i+1
为什么会死循环?
set @i=@i+1 没起作用这样就可以:
declare @entName varchar(500)
    set @entName='宁波lsd'
    declare @str varchar(200)
    
    declare @i int
    set @i=1
    while @i<=len(@entName)
    begin
      print @i
  select @str=substring(@entName,@i,1)
      print @str
      set @i=@i+1
    end它是怎么执行的?
   

解决方案 »

  1.   

        while @i<=len(@entName)
    begin
          select @str=substring(@entName,@i,1)
          print @str
          set @i=@i+1
    end
      

  2.   

    没有执行到这句set @i=@i+1
    一直@i<=len(@entName)
    所以死循环
      

  3.   


    为什么不会执行到这句set @i=@i+1 ?
      

  4.   

    begin ... end 没有配对,
    你前面个相当于while只执行
    select @str=substring(@entName,@i,1)
    这一句,
    必须要begin... end配对才行.
      

  5.   


    联机丛书....
     begin ......END 的用;
      两句或两句以上的语句快,必需用BEGIN--END
      

  6.   

    你这样只执行while循环的第一条语句...