10g树形查询新特性Oracle认证考试

文章作者 100test 发表时间 2009:11:15 09:13:03
来源 100Test.Com百考试题网


"tbbnc">

  在10g中Oracle提供了新的伪列: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行。


相关文章


oracle获取汉字拼音和拼音首字母(1)Oracle认证考试
oracle认证辅导:oracle常见异常Oracle认证考试
使用kfed修复磁盘组DSKGRP2Oracle认证考试
OraclePLS调试的输出方法Oracle认证考试
10g树形查询新特性Oracle认证考试
oracle自动备份与Oracle远程备份Oracle认证考试
ORACLE10g自动收集CBO统计信息Oracle认证考试
PL_SQL的异常处理Oracle认证考试
Oracle数据库主要的系统表和数据字典视图Oracle认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛