这其实是一种数型结构,有一个根目录其下是目录中的文件和目录
每一条记录是一个文件或一个目录
create table tree(
  treeid number(10),      --- 主关键字,唯一标  
  father number(10),      --- 指向上一级目录,如为最上层则为空
  filename varchar2(100), --- 文件名
  type number(1)          --- 是目录还是文件 
)

解决方案 »

  1.   

    这本身最好在数据库用存储函数进行,几万条在建立了索引的情况下问题不大
    给你一个伪算法用oracle写的遍历以APNode为根节点的树(由于时间关系没测试)type number(1)          --- 是目录还是文件 0 目录,1 节点create or replace procedure trveTree(APNode in number) is
      tmpTreeid number(10);
      tmpFather number(10); 
      tmpFilename varchar2(100);
      tmpType number(1);
      
      v_ID number(10);
      v_sql varchar2(200);
      type c_1 is ref cursor;
      v_in c_1;
    begin
      select treeid,father,filename,type into tmpTreeid,tmpFather,tmpFilename,tmpType from tree where treeid:=APNode;
      if tmpType=0 then
        v_sql:=' select treeid from tree where treeid='||treeid;
        OPEN v_in FOR v_sql;
        LOOP 
          fetch v_in into v_ID;
          EXIT WHEN v_in%NOTFOUND;
          call trveTree(v_ID);
        END LOOP ;
        CLOSE v_in;
      end if;
    end;  
      

  2.   

    哇塞,要用存储函数呀,不知用客户端的SQL能不能做到?
      

  3.   

    要是层数有限制的话还可以用字符串方式
    例如:
    AA
      AA00
        AA0000
      AA01
    这样就不用递归了,速度也快