`
angkorpeach
  • 浏览: 122895 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Oracle connect by 使用实例

阅读更多

本为是我的同事陈为的作品:

 

ORACLE 提供了一个有趣的功能 connect by 子句,它可以对具有家族树结构的分枝进行排序。它的用途有机构或公司的各层结构,财务的科目代码等。

要使用查询遍历,需要在将数据在基表中按照层次结构进行存储。比如一个组织机构就是这样的典型例子。

实现语句:
SELECT column
FROM table_name
START WITH column=value
CONNECT BY PRIOR 父主键=子外键


网上有朋友已经给了一个简洁的例子,就直接引用他的例子如下:

Start with...Connect By子句递归查询一般用于一个表维护树形结构的应用。
创建示例表:
CREATE TABLE TBL_TEST
(
  ID    NUMBER,
  NAME  VARCHAR2(100 BYTE),
  PID   NUMBER                                  DEFAULT 0
);
 
插入测试数据:
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('1','10','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2');
 
从Root往树末梢递归
select * from TBL_TEST
 start with id=1
 connect by prior id = pid
 
从末梢往树ROOT递归
select * from TBL_TEST
 start with id=5
 connect by prior pid = id

 

分享到:
评论

相关推荐

    Oracle的Connect By使用示例

    ### Oracle的Connect By使用示例 #### 一、引言 在关系数据库系统中,进行树状或层次结构数据查询时经常会遇到复杂性问题。Oracle数据库通过提供`START WITH...CONNECT BY`语句来简化这类查询操作。此功能最早出现...

    oracle connect by level 应用

    Oracle的`CONNECT BY LEVEL`是数据库查询中用于构建层次结构数据的一种强大工具,尤其是在处理具有层级关系的数据时,如组织架构、产品分类等。本文将深入探讨`CONNECT BY`子句以及`LEVEL`伪列的使用,以帮助你更好...

    connect by的使用探索

    "Connect By的使用探索" Connect By是一种递归查询语句,用于实现树形结构的查询和遍历。它是 Oracle 数据库中的一种特色语句,能够高效地查询树形结构的数据。 Connect By的基本语法 Connect By语句的基本语法...

    浅谈Oracle下connect by原理.pdf

    文章中给出了一个名为`t_test_connectby`的数据表例子,其中包含父子关系的节点数据。通过该表,我们可以更直观地了解Connect By的执行过程。 - 不指定起始条件时,使用`CONNECT BY`: ```sql SELECT * FROM t_test...

    Oracle start with.connect by prior子句实现递归查询

    ### Oracle Start With.Connect By Prior 子句实现递归查询 #### 概述 在Oracle数据库中,`Start With.Connect By Prior`子句是执行递归查询的一种强大工具,主要用于处理层次结构数据。这类数据通常存在于组织...

    plsql连接64位oracle报错instantclient或没有connect by 选项问题

    此问题通常是由于 PL/SQL Developer 的配置不当或者使用的 Oracle 客户端版本较低,不支持 `Connect By` 功能。 #### 三、解决步骤 本文将详细介绍如何解决以上问题,并提供了一键解决方法,即通过下载并正确配置 ...

    connect_by_path和connect_by_root比较总结

    通过实例比较了 SYS_CONNECT_BY_PATH 和 CONNECT_BY_ROOT 的异同,和返回树形的数据结构

    oracle菜单树查询

    oracle菜单树查询 使用实例 使用START WITH CONNECT BY PRIOR子句实现递归查询

    Oracle_11g图形界面创建数据库实例

    在本篇文章中,我们将详细介绍如何使用Oracle 11g图形界面创建一个新的数据库实例,并进一步配置包括表空间、角色及导入数据文件等操作。这不仅适用于初学者快速上手,也对有经验的数据库管理员提供了一个清晰的操作...

    connect by prior数据库树的应用

    本文将详细介绍如何利用 `Connect By Prior` 来构建和查询层次结构数据,并通过具体的例子来解释其工作原理。 #### 核心知识点详解 ### 1. `Connect By Prior` 的基本语法与含义 `Connect By Prior` 是一个用于...

    oracle使用dblink的例子

    DBLink(Database Link)是Oracle数据库提供的一种连接不同数据库实例的功能。通过DBLink,用户可以在一个数据库环境中查询、更新另一个数据库中的数据,这为跨数据库操作提供了便利。 #### 创建DBLink示例 在本...

    Oracle数据库ProC编程实例

    它使用`EXEC SQL CONNECT :uid IDENTIFIED BY :pwd;`语句进行连接,其中`uid`和`pwd`是C变量,分别存储用户名和密码。函数返回值是`sqlca.sqlcode`,它是Oracle通信区的一部分,用于检查SQL语句的执行状态。 5. ...

    oracle数据库备份与还原实例

    本文将介绍 Oracle 数据库备份与还原实例,使用 exp 与 imp 方式导出和导入数据,同时也包含 Linux 服务器间 sftp 传输。 一、Oracle 数据库备份 在 Linux 系统下操作,使用 exp 命令来备份 Oracle 数据库。exp ...

    oracle 拆分列实例

    在给定的文件信息中,标题“oracle拆分列实例”明确指出了这一主题,而描述则暗示了实现这一功能的复杂性和耗时性。下面将详细解释如何使用Oracle SQL来实现列的拆分。 ### Oracle拆分列的基本概念 在Oracle中,...

    oracle操作实例

    ### Oracle操作实例 #### Oracle数据库启动与连接 - **启动数据库:** 在操作系统层面通过特定命令来启动Oracle数据库。 - **连接方式:** 可以使用`connect as sysdba`的方式进行高级权限的连接。 #### 修改用户...

    Oracle ODI使用手册

    Oracle ODI 使用手册 Oracle ODI 使用手册详细讲解如何使用 Oracle ODI,从创建存储库到使用 designer 登录工作存储库,创建项目,导入知识模块等。 一、创建存储库 在使用 Oracle ODI 之前,首先需要创建...

    oracle递归查询的例子

    ### Oracle 递归查询详解及实例 #### 一、引言 在数据库查询语言中,Oracle 提供了一种强大的功能——递归查询,这在其他数据库系统如 SQL Server 中是缺失的功能。递归查询允许用户执行多级关联查询,特别适用于...

    PHP3中使用ORACLE函数的使用说明

    Oracle支持游标,你可以使用`oci_new_cursor()`创建一个游标,`oci_bind_by_name()`绑定变量,然后在查询中使用`$cursor`变量。执行后,通过`oci_execute($cursor)`遍历结果。 5. **事务处理**: Oracle支持事务...

    oracle 跨实例 数据同步

    ### Oracle 跨实例数据同步详解 #### 一、概述 在企业级应用环境中,经常需要在不同的Oracle数据库实例之间进行数据同步。这种需求可能源于多种原因,比如数据备份、灾难恢复准备、分布式事务处理或是数据分发等。...

    start connect by

    在例子中,`CONNECT BY PRIOR employee_id = manager_id` 表示当前行的`employee_id`等于前一行的`manager_id`,这样就建立了员工与其直接上级之间的连接。这个过程会持续进行,直到所有符合规则的层级都被遍历。 `...

Global site tag (gtag.js) - Google Analytics