一个存储过程里的循环如下:
alter proc search_friends1
@username varchar(20)
as
declare @l int
set @l=0
select username,f_name,level=@l,line=cast('('+username+'->'+f_name as varchar(8000)) into #t from friends_sub where username=@username and friendclass_id=1
while @l<=5
begin
set @l=@l+1
insert #t(username,f_name,level,line)
select  username=a.username,f_name=a.f_name,level=@l,line=line+'->'+a.f_name from friends_sub a,#t b where a.username=b.f_name and b.level=@l-1
end
select username,f_name,level,关系网=line+')' from #t  where level=(select max(level)  from #t)发现执行之后卡住了 取消后无结果集;
循环中这样写:insert #t(username,f_name,level,line)
select  username=a.username,f_name=a.f_name,level=@l+1,line=line+'->'+a.f_name from friends_sub a,#t b where a.username=b.f_name and b.level=@l
set @l=@l+1
也卡住了 
insert #t(username,f_name,level,line)
select  username=a.username,f_name=a.f_name,level=@l+1,line=line+'->'+a.f_name from friends_sub a,#t b where a.username=b.f_name and b.level=@l
这个语句拿出来负上具体值都能执行
请问问题处在哪?
如何解决?