唉,没办法啊,要在树中查找任意两个节点间是否存在上下级关系,
如果在程序界面上做也得递归着连数据库,速度也会很慢。
关键现在数据不是很多的情况下效能也较差,
我每次递归调用退出时都将cursor关闭了啊,难道close cursor不能真正将cursor从内存中消除?
请问 轻尘兄有无研究?

解决方案 »

  1.   

    我不知道你具体求什么.
    但我想用start with ... connect by prior应该可以解决你的问题
    SELECT ...FROM ... 
    WHERE ...
    START WITH ... 
    CONNECT BY PRIOR ...
      

  2.   

    我想也是你的问题应该可以用查询搞定,connect by 这种结构就是解决树形结构的!
      

  3.   

    connect by prior是可以将树按层级展示出来,可是在越级判断的时候或根节点不一样的时候
    是发挥不了太大作用的.
    我的需求如下:主要判断多棵树(保存于两个物理表,一个header,一个line,通过Header_id关联)中,任意
    两个节点是否存在上下级关系我仔细考虑了,可能是程序逻辑问题,递归时可能有没退出去的情况.
    也希望大家能提供更好的方法.
    这两天要培训,同时还有工作任务,回帖慢了些....
      

  4.   

    问题经过仔细考虑,终于得到解决.
    原来错误原因在于对cursor的用法不熟,所以在网上(www.dbonline.cn)查到了一个pl sql对cursor
    的用法.结果就没怎么怀疑地按照上面的做了,其实这个网址上的做法是错误的,只能产生一个死
    循环的用法.因为没有将fetch * into * 放到循环体中.通过这件事对我也有个启示,"尽信书不如无书",网上的信息虽多而全,但要抱着怀疑的态度去接受,
    而且还要自己理解透了再去应用,否则知识永远都是别人的.感谢大家的参与!