+ -
当前位置:首页 → 问答吧 → 这个函数 会不会出现死循环

这个函数 会不会出现死循环

时间:2011-06-22

来源:互联网

'列出某类下所有子类(包括自己)的classId
function listChildClassId(classId)
  dim ClassIds,rs
  sqlT="select * from pro_c1 where p_class1id="&classId
set rs=conn.execute(sqlT)
do until rs.eof
classIds=classIds&","&listChildClassId(rs("class1Id"))
rs.movenext
Loop
rs.close
Set rs=nothing
listChildClassId=classId&classIds
end function

作者: ren0594   发布时间: 2011-06-22

不会。
until rs.eof
rs.eof就退出循环了,何来死循环

作者: tcwsyt   发布时间: 2011-06-22

引用 1 楼 tcwsyt 的回复:

不会。
until rs.eof
rs.eof就退出循环了,何来死循环


他有个递归

真有可能出现死循环

作者: luxu001207   发布时间: 2011-06-22

是,就是递归,就是正常运行这样,能出现死循环?

作者: ren0594   发布时间: 2011-06-22

要看你数据库里的数据如何了

示例:
参数classId=1的时候有数据,而取出来的rs("class1Id")一样是1的时候,可能就会导致死循环了

作者: luxu001207   发布时间: 2011-06-22

function listChildClassId(classId)
  dim ClassIds,rs
  sqlT="select * from pro_c1 where p_class1id="&classId
set rs=conn.execute(sqlT)
if not (rs.eof or rs.bof) then
do until rs.eof
classIds=classIds&","&listChildClassId(rs("class1Id"))
rs.movenext
Loop
end if
rs.close
Set rs=nothing
listChildClassId=classId&classIds
end function

没看仔细,不好意思。如果没有下级ID,可能会报错。加个判断吧。

作者: tcwsyt   发布时间: 2011-06-22

有可能,要看看你的数据库里面的内容,比较2指向1,3指向2,1又指向3,这样就变成死循环

作者: liuchaolin   发布时间: 2011-06-22