科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Oracle10g中层次查询简介(二)

Oracle10g中层次查询简介(二)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

  在Oracle 10g 中还有一个新操作――CONNECT_BY_ROOT。 它用在列名之前用于返回当前层的根节点。如下面的例子,我可以显示出层次结构表中当前行数据所对应的最高等级节点的内容。

作者:中国IT实验室 来源:中国IT实验室 2007年9月15日

关键字: 安装配置 数据库 ORACLE

  • 评论
  • 分享微博
  • 分享邮件

 

  在Oracle 10g 中还有一个新操作――CONNECT_BY_ROOT。 它用在列名之前用于返回当前层的根节点。如下面的例子,我可以显示出层次结构表中当前行数据所对应的最高等级节点的内容。

 

 

 

 

 

 

select connect_by_root child,sys_connect_by_path(child,'/') path

from hier

start with parent is null

connect by prior child = parent;

CONNECT_BY_ROOT PATH

------------------------------ --------

Asia /Asia

Asia /Asia/China

Asia /Asia/China/Beijing

Asia /Asia/Japan

Asia /Asia/Japan/Osaka

Asia /Asia/Japan/Tokyo

Australia /Australia

Australia /Australia/New South Wales

Australia /Australia/New South Wales/Sydney

Europe /Europe

Europe /Europe/United Kingdom

Europe /Europe/United Kingdom/England

Europe /Europe/United Kingdom/England/London

North America /North America

North America /North America/Canada

North America /North America/Canada/Ontario

North America /North America/Canada/Ontario/Ottawa

North America /North America/Canada/Ontario/Toronto

North America /North America/USA

North America /North America/USA/California

North America /North America/USA/California/Redwood Shores

  在Oracle 10g 之前的版本中,如果在你的树中出现了环状循环(如一个孩子节点引用一个父亲节点),Oracle 就会报出一个错误提示:“ ORA-01436: CONNECT BY loop in user data”。如果不删掉对父亲的引用就无法执行查询操作。而在 Oracle 10g 中,只要指定“NOCYCLE”就可以进行任意的查询操作。与这个关键字相关的还有一个伪列――CONNECT_BY_ISCYCLE, 如果在当前行中引用了某个父亲节点的内容并在树中出现了循环,那么该行的伪列中就会显示“1”,否则就显示“0”。如下例所示:

create table hier2

(

parent number,

child number

);

insert into hier2 values(null,1);

insert into hier2 values(1,2);

insert into hier2 values(2,3);

insert into hier2 values(3,1);

select connect_by_iscycle,sys_connect_by_path(child,'/') path

from hier2

start with parent is null

connect by nocycle prior child = parent;

CONNECT_BY_ISCYCLE PATH

------------------ -------

0 /1

0 /1/2

1 /1/2/3

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件