知识大全 用Oracle10g新层次伪列探查层次循环

Posted

篇首语:知是行的主意,行是知的功夫。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用Oracle10g新层次伪列探查层次循环相关的知识,希望对你有一定的参考价值。

用Oracle10g新层次伪列探查层次循环  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在上一篇文章中 我说明了如何分类层次化查询中的输入项 但是 要使一个层次化查询得以运行 就不能使数据返回到自身 也就是说 一个母行不能把自己或它的一个子行作为自己的母行 如果发生这种情况 Oracle将重复不断地执行这个链接 永远无法到达一个确定的终点

  幸运的是 Oracle对这种情况进行测试 并用以下错误信息中止查询

  ORA : CONNECT BY loop in user data

  过去 我们很难发现一个大型数据集中的所有行彼此引用 因为查询在发现第一个循环时就已经终止 在Oracle g中 SELECT语句的两个新语法元素为你提供了解决这类数据错误的工具 NOCYCLE和CONNECT_BY_ISCYCLE

  CONNECT BY子句中增加的NOCYCLE参数指出 即使探查到一个循环 Oracle无论如何也要返回一个行 这为查明哪个行出错提供了极有价值的线索(不用担心——Oracle会停止评估循环 转向下一行 ) 如果当前的行包含一个循环 CONNECT_BY_ISCYCLE伪列将返回 否则将返回 组合使用这两个元素 就能查明需要修复的内容

  列表A是和上一篇文章中相同的层次化查询 我们根据HR样本方案执行它

  这次我们在数据中介绍另一个循环 将员工Kochhar( )改为向Urman( )报告 Urman向Greenberg( )报告 Greenberg则向Kochhar报告 从而建立一个循环

  UPDATE employees

  SET manager_id =

  WHERE employee_id = ;

  MIT;

  如果我们重新运行上述查询 将得到ORA 错误 列表B探查我们介绍的错误 我们没有使用CONNECT BY PRIOR 而是使用了CONNECT BY NOCYCLE PRIOR 即使探查到一个循环 它仍然会继续进行查询 我们还在报告中增加了manager_id列和CONNECT_BY_ISCYCLE伪列以帮助解决这个问题

  输出结果在Urman行显示 回溯循环链 我们就能发现出错的地方 Kochhar那一行

  column Reports To format a set pagesize SELECT LPAD( *(LEVEL ))||last_name Reports To employee_id FROM employees START WITH employee_id IN ( ) CONNECT BY PRIOR employee_id = manager_id / Reports To                     EMPLOYEE_ID                                                                            De Haan                                                                        Hunold                                                                         Austin                                                                       Ernst                                                                        Lorentz                                                                      Pataballa                                                                Kochhar                                                                        Baer                                                                         Greenberg                                                                      Chen                                                                         Faviet                                                                       Popp                                                                         Sciarra                                                                      Urman                                                                          Kochhar                                                                ERROR: ORA : CONNECT BY loop in user data

cha138/Article/program/Oracle/201311/18866

相关参考

知识大全 Oracle10g中层次查询简介

Oracle10g中层次查询简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我们可以通过ST

知识大全 Oracle 中使用层次查询方便处理财务报表

Oracle中使用层次查询方便处理财务报表  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Ora

知识大全 Oracle层次查询和with函数的使用示例

Oracle层次查询和with函数的使用示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  开发

知识大全 Oracle10g新特性—RMAN

Oracle10g新特性—RMAN  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  RMAN增量备

知识大全 Oracle10g新特性—选择性编译

Oracle10g新特性—选择性编译  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Oracle

知识大全 Oracle10g最佳20个新特性

Oracle10g最佳20个新特性  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!答案依DBA的工作

知识大全 Oracle10g新特性——选择性编译

Oracle10g新特性——选择性编译  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Oracl

知识大全 Oracle10g新特性—增强的CONNECTBY子句

Oracle10g新特性—增强的CONNECTBY子句  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 使用Oracle10g提供的flashback drop新特性

使用Oracle10g提供的flashbackdrop新特性  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 oracle 10g 新特性中文笔记一

  第一章安装    目标    完成本课您将能够:    *列出新的安装特性  *列出安装性能的增加    安装新特性支持    *数据库存储选项  文件系统  自动存储管理(asm)  裸设备