首页 > 数据库 >Oracle 递归函数

Oracle 递归函数

时间:2022-12-19 00:12:07浏览次数:45  
标签:下级 递归函数 -- empno CONNECT Oracle id SELECT

1、自连接

--需求-1:
--员工编号、员工姓名、上级领导编号、上级领导姓名、自连接
SELECT e.empno, m.ename
FROM emp e, emp m
WHERE e.mgr=m.empno;

 

 

 2、递归

1)求出员工编号为7369的所有上级领导

--需求-2:
--求出员工编号为7369的所有上级领导
SELECT empno, ename
FROM emp e
START WITH empno=7369
CONNECT BY empno=PRIOR mgr;

 

 

 2)求出员工编号为7369的所有下属

--需求-3:
--求出员工编号为7369的所有下属
SELECT empno, ename
FROM emp e
START WITH empno=7369
CONNECT BY PRIOR empno= mgr;

 

 

 3)求出各个员工的所有上级领导

复制代码
--需求-4:
--求出各个员工所有级领导
SELECT a1.*, (
  SELECT SUBSTR(SYS_CONNECT_BY_PATH(empno, '->'), 3) NAME_PATH
  FROM emp a
  WHERE a.mgr IS NULL
  START WITH a.empno = a1.empno
  CONNECT BY PRIOR a.mgr = a.empno
) AS NAME_PATH
FROM emp a1;
复制代码

 

 

 4)取编号为104001008002城市的所有上级城市 南关区

复制代码
--需求5:
--取编号为104001008002城市的所有上级城市 南关区
SELECT * FROM china
WHERE c_id = 104001008002;
------LEVEL可以对得到的所有上级/下级进行排序,可以表示出层级大小
------SYS_CONNECT_BY_PATH()可以用指定的分隔符对各层级进行分隔
SELECT c_id, c_name, LEVEL,
       SYS_CONNECT_BY_PATH(c_name, '->')
FROM china
START WITH c_id = 104001008002
CONNECT BY c_id = PRIOR superior_c_id;
复制代码

 

 5)查询中南地区各下级城市列表

复制代码
--需求6:
--查询中南地区各下级城市列表
SELECT 中南地区下级城市列表,
       REGEXP_SUBSTR(中南地区下级城市列表, '[^->]+', 1, 1)地区,
       REGEXP_SUBSTR(中南地区下级城市列表, '[^->]+', 1, 2)省份,
       REGEXP_SUBSTR(中南地区下级城市列表, '[^->]+', 1, 3)城市,
       REGEXP_SUBSTR(中南地区下级城市列表, '[^->]+', 1, 4)区县
FROM(
SELECT c_id, c_name, LEVEL le, 
       SYS_CONNECT_BY_PATH(c_name, '->') as 中南地区下级城市列表
FROM china
START WITH c_id = 104
CONNECT BY PRIOR c_id = superior_c_id
)
where le=4;
复制代码

 

标签:下级,递归函数,--,empno,CONNECT,Oracle,id,SELECT
From: https://www.cnblogs.com/yclizq/p/16991314.html

相关文章

  • Oracle 性能监控工具AWR使用
    由于LoadRunner对Linux系统的性能指标监控功能不够完善,因此我们主要用nmon工具来监控性能测试过程中服务器的资源使用情况。首先,在测试电脑上安装好Xmanager后,打开Xshell。......
  • Oracle中PL/SQL单行函数和组函数详解
    函数是一种有零个或多个参数并且有一个返回值的程序。在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类:23单行函数4......
  • Oracle数据库基础
    1.Oracle介绍Oracle:关系型的数据库,端口号:1521,收费(学习是免费的,用于商业要授权)19万左右,每年交服务费效率高,安全 mysql:关系型的数据库,表于表的关系:外键,端口号......
  • 【Python012-递归函数&匿名函数(lambda)&内置函数】
    递归的特点函数内部自己调用自己必须有出口应用:3以内数字累加和代码#3+2+1defsum_numbers(num):#1.如果是1,直接返回1--出口ifnum==1:return1......
  • Oracle-统计信息收集-TABLE
    在Oracle数据库,执行sql语句的时候,会根据统计信息选择最优执行计划,当执行性能比自己想象的慢时,就有可能是统计信息不是最新导致。表的统计信息主要包含表的总行数(num_rows)、......
  • Oracle-统计信息收集-INDEX
    索引的统计信息主要包含索引blevel(索引高度-1)、叶子块的个数(leaf_blocks)以及集群因子(clustering_factor)。我们可以通过数据字典DBA_INDEXES查看索引的统计信息。创建索引......
  • Oracle-查询表大小
    --查找特定表大小setlinesize200;colownerfora18;colsegment_namefora28;selectowner,segment_name,sum(bytes/1024/1024)segment_sizefromdba_segments......
  • 运用ogg实现oracle 10g到19c schema级别的同步
    文档课题:运用ogg实现oracle10g到19cschema级别的同步.源端:192.168.133.108数据库oracle10.2.0.464位,实例名:orcl目标端:192.168.133.109数据库oracle19.16.0.0......
  • oracle数据库startup启动报错ORA-27125 unable to create shared memory segment
    问题描述:oracle数据库startup启动报错ORA-27125unabletocreatesharedmemorysegment,如下所示:系统:suse11.2环境:rac双节点+oracle11.2.0.4说明:节点1数据库正常,节点2......
  • “PL/SQL识趣--巧用Over函数”和“我们怎样来做性能诊断---Oracle性能诊断方法”双双
    作者:三十而立时间:2009年10月15日13:05:56 昨晚写了PL/SQL识趣--巧用Over函数,通过一个网友问的一个SQL题,通过实战的形式,把Over函数的用法介绍给大家,这个文章里不仅讲解......