第3章 伪列:分层查询伪列

原文地址:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns001.htm

伪列与表的列类似,但是不在表中实际存储。可以查询伪列,但是不能插入、更新或者删除伪列的值。伪列还类似于一个没有参数的函数。但是无参的函数通常对于每一行都返回相同的值,而伪列通常返回不同的值。

分层查询伪列只能用于分层查询。

CONNECT_BY_ISCYCLE伪列

对于当前行,如果它具有一个既是子节点又是父节点的行,CONNECT_BY_ISCYCLE伪列返回1;否则,返回0。

只有指定了CONNECT BY子句的NOCYCLE参数时才能指定CONNECT_BY_ISCYCLE。如果查询的数据存在CONNECT BY循环,该查询将会失败;而NOCYCLE允许返回这种情况下的查询结果。

关于NOCYCLE参数和分层查询示例,参考“第9章 SQL查询与子查询:分层查询”。

CONNECT_BY_ISLEAF伪列

如果当前行是结构树的一个叶子节点,CONNECT_BY_ISLEAF伪列返回1;否则,返回0。该值表示某一行是否能够进一步扩展结构树。

示例:以下示例显示了hr.employees表的前三层,指示每一行是否为叶子行(Isleaf列为1)或者是否拥有子节点行(IsLeaf列为0)。

SELECT last_name "Employee", CONNECT_BY_ISLEAF "IsLeaf",
   LEVEL, SYS_CONNECT_BY_PATH(last_name, '/') "Path"
   FROM employees
   WHERE LEVEL <= 3 AND department_id = 80
   START WITH employee_id = 100
   CONNECT BY PRIOR employee_id = manager_id AND LEVEL <= 4;

Employee            IsLeaf      LEVEL Path
--------------- ---------- ---------- -----------------------------------
Russell                  0          2 /King/Russell
Tucker                   1          3 /King/Russell/Tucker
Bernstein                1          3 /King/Russell/Bernstein
Hall                     1          3 /King/Russell/Hall
Olsen                    1          3 /King/Russell/Olsen
Cambrault                1          3 /King/Russell/Cambrault
Tuvault                  1          3 /King/Russell/Tuvault
Partners                 0          2 /King/Partners
King                     1          3 /King/Partners/King
Sully                    1          3 /King/Partners/Sully
McEwen                   1          3 /King/Partners/McEwen
Smith                    1          3 /King/Partners/Smith
Doran                    1          3 /King/Partners/Doran
Sewall                   1          3 /King/Partners/Sewall
Errazuriz                0          2 /King/Errazuriz
Vishney                  1          3 /King/Errazuriz/Vishney
...

34 rows selected.

LEVEL伪列

对于层次查询返回的每一行,LEVEL伪列对于根节点行返回1,根节点的子节点行返回2,以此类推。根节点行是倒置树中的最高行。子节点行是指非根节点行。父节点行是指拥有子节点的行。也子节点行是指没有子节点的行。下图显示了一棵倒置树节点的LEVEL值。

bb

图1 层次树

要定义查询中的层次关系,必须使用START WITH与CONNECT BY子句。


fj.pngsqlrf001.gif

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24945919/viewspace-747833/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24945919/viewspace-747833/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值