CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

数据库 | Oracle | DB2 | SQL Server | MySQL | 商业智能 | BI | DBA | Sybase| SQL Server 2008

您现在的位置: IT专家网 > 数据库子站 > 数据库技巧

10g树形查询特性CONNECT_BY_ISCYCLE的9i实现方式一

作者: 杨廷琨,  出处:blog, 责任编辑: 王晓晨, 
2008-07-25 08:00
  在10g中Oracle提供了新的伪列:CONNECT_BY_ISCYCLE,通过这个伪列,可以判断是否在树形查询的过程中构成了循环,这个伪列只是在CONNECT BY NOCYCLE方式下有效。

10g树形查询新特性CONNECT_BY_ISCYCLE的9i实现方式一 

 10g树形查询新特性CONNECT_BY_ISCYCLE的9i实现方式二 

10g树形查询新特性CONNECT_BY_ISCYCLE的9i实现方式三 

     在10gOracle提供了新的伪列:CONNECT_BY_ISCYCLE,通过这个伪列,可以判断是否在树形查询的过程中构成了循环,这个伪列只是在CONNECT BY NOCYCLE方式下有效。

  这一篇描述一下解决问题的思路

  CONNECT_BY_ISCYCLE的实现和前面两篇文章中CONNECT_BY_ROOT和CONNECT_BY_ISLEAF的实现完全不同。

  因为要实现CONNECT_BY_ISCYCLE,就必须先实现CONNECT BY NOCYCLE,而在9i中是没有方法实现这个功能的。

  也就是说,首先要实现自己的树形查询的功能,而仅这第一点,就是一个异常困难的问题,何况后面还要实现NOCYCLE,最后再加上一个ISCYCLE的判断。

  所以总的来说,这个功能的实现比前面两个功能要复杂得多。由于树形查询的LEVEL是不固定的,所以采用链接的方式实现,基本上是不现实的。换句话说,用纯SQL的方式来实现树形查询的功能基本上不可行。而为了解决这个功能,只能通过PL/SQL配合SQL来实现。

  仍然是首先构造一个例子:

SQL> CREATE TABLE T_TREE (ID NUMBER, FATHER_ID NUMBER, NAME VARCHAR2(30));
  表已创建。
  SQL> INSERT INTO T_TREE VALUES (1, 0, 'A');
  已创建 1 行。
  SQL> INSERT INTO T_TREE VALUES (2, 1, 'BC');
  已创建 1 行。
  SQL> INSERT INTO T_TREE VALUES (3, 1, 'DE');
  已创建 1 行。
  SQL> INSERT INTO T_TREE VALUES (4, 1, 'FG');
  已创建 1 行。
  SQL> INSERT INTO T_TREE VALUES (5, 2, 'HIJ');
  已创建 1 行。
  SQL> INSERT INTO T_TREE VALUES (6, 4, 'KLM');
  已创建 1 行。
  SQL> INSERT INTO T_TREE VALUES (7, 6, 'NOPQ');
  已创建 1 行。
  SQL> INSERT INTO T_TREE VALUES (0, 0, 'ROOT');
  已创建 1 行。
  SQL> INSERT INTO T_TREE VALUES (4, 7, 'FG');
  已创建 1 行。
  SQL> COMMIT;
  提交完成。
  SQL> SELECT * FROM T_TREE;
  ID FATHER_ID NAME
  ---------- ---------- ------------------------------
  1 0 A
  2 1 BC
  3 1 DE
  4 1 FG
  5 2 HIJ
  6 4 KLM
  7 6 NOPQ
  0 0 ROOT
  4 7 FG
  已选择9行。
共3页。 1 2 3 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅


    
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i