WEB开发网
开发学院数据库Oracle Oracle兼容之层次查询:层次查询高级特性分析 阅读

Oracle兼容之层次查询:层次查询高级特性分析

 2008-09-04 12:50:44 来源:WEB开发网   
核心提示:1.层次查询环的判断 1.1 环的出现层次查询中的环指的是作为某一行数据祖先结点的行又作为该行的子结点出现的情况,下面,Oracle兼容之层次查询:层次查询高级特性分析,我们通过一个例子来说明层次查询中环的出现,建立如下数据:createtablet1(parentint,valueint);insertintot1v

1.层次查询环的判断

1.1 环的出现

层次查询中的环指的是作为某一行数据祖先结点的行又作为该行的子结点出现的情况。下面,我们通过一个例子来说明层次查询中环的出现,建立如下数据:

   createtablet1(parentint,valueint);
  insertintot1values(1,2);
  insertintot1values(2,3);
  insertintot1values(2,4);
  insertintot1values(3,5);
  insertintot1values(3,6);
  insertintot1values(5,2);

按照如下层次查询语句的连接条件,表t1的数据可以组成如图1的结构。

   select*fromt1connectbypriorvalue=parentstartwithvalue=2;

Oracle兼容之层次查询:层次查询高级特性分析

图1 t1数据的层次结构

如图1所示,根据连接条件prior value = parent,作为(5,2)祖先结点的数据行(2,3)又作为其子结点出现,这样就形成了环;而(2,4)虽然与(2,3)同是(1,2)的子结点,但由于不是(5,2)的直接祖先,所以作为其子结点出现也并不能形成环。

利用上述层次查询语句进行查询,结果报错。

1.2 Oracle中判断环的标准分析

按照环的定义,逻辑上很容易进行环的判断,但是层次查询可以通过NOCYCLE关键字来屏蔽掉形成环的数据;CONNECT_BY_ISCYCLE伪列在当前行的祖先结点又出现在其子结点时返回1,所以我们需要进一步研究层次查询中形成环的标准。

下面通过NOCYCLE关键字和CONNECT_BY_ISCYCLE、LEVEL等伪列来研究Oracle层次查询出现环的判断。

对上一节表t1的数据,进行如下查询:

1 2 3 4 5 6  下一页

Tags:Oracle 兼容 层次

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接