oracle 删除用户 递归,ORACLE递归查询遍历详解
Oracle 实在太强了,本篇文章详细介绍了Oracle的递归查询语法,利用此语法,可以方便地实现递归的双向查询:
-- Tirle : Recursion query for TREE with "connect by/start with"
-- Author : Rake Gao
-- Create Date : 2005-08-22
-- Version : 2.0
-- Last Modify : 2005-08-22
目 录
一、测试准备
二、实现各种查询要求
三、要点总结
正 文
一、测试准备
1、先假设有如下部门结构。
1
/ /
2 3
// /|/
4 5 6 7 8
2、然后建立测试表和数据。
drop table t_dept_temp;
create table t_dept_temp(
DEPT_ID NUMBER(2) NOT NULL,
PARENT_ID NUMBER(2) ,
DEPT_NAME VARCHAR2(10) ,
AMOUNT NUMBER(3) --人数
);
delete t_dept_temp;
insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values (1,null,'1' ,2);
insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values (2,1 ,'1-2' ,15);
insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values (3,1 ,'1-3' ,8);
insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values (4,2 ,'1-2-4',10);
insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values (5,2 ,'1-2-5',9);
insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values (6,3 ,'1-3-6',17);
insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values (7,3 ,'1-3-7',5);
insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values (8,3 ,'1-3-8',6);
commit;
SQL> select * from t_dept_temp;
DEPT_ID PARENT_ID DEPT_NAME AMOUNT
------- --------- ---------- ------
1 1 2
2 1 1-2 15
3 1 1-3 8
4 2 1-2-4 10
5 2 1-2-5 9
6 3 1-3-6 17
7 3 1-3-7 5
8 3 1-3-8 6
3、调整一下输出格式
col DEPT_ID format A10;
二、接下来实现各种查询要求
1、部门2及其所有下级部门。
SELECT LPAD(' ',2*(LEVEL - 1), ' ')||DEPT_ID AS DEPT_ID,
PARENT_ID,DEPT_NAME,AMOUNT
FROM t_dept_temp
CONNECT BY PARENT_ID = PRIOR DEPT_ID -- 找出所有PARENT_ID等于当前记录DEPT_ID的记录。
START WITH DEPT_ID = 2 -- 从部门2开始递归查询。
;
DEPT_ID PARENT_ID DEPT_NAME AMOUNT
---------- --------- ---------- ------
2 1 1-2 15
4 2 1-2-4 10
5 2 1-2-5 9
2、部门4及其所有上级部门
SELECT LPAD(' ',2*(LEVEL - 1), ' ')||DEPT_ID AS DEPT_ID,
PARENT_ID,DEPT_NAME,AMOUNT
FROM T_DEPT_TEMP
CONNECT BY PRIOR PARENT_ID = DEPT_ID -- 找出所有DEPT_ID等于当前记录PARENT_ID的记录
START WITH DEPT_ID = 4 -- 从部门4开始递归查询。
;
DEPT_ID PARENT_ID DEPT_NAME AMOUNT
---------- --------- ---------- ------
4 2 1-2-4 10
2 1 1-2 15
1 1 2
oracle 删除用户 递归,ORACLE递归查询遍历详解相关推荐
- oracle 删除用户 ora-00604,ORACLE下用户无法顺利删除问题处理一则-ORA-00604和ORA-00942错误...
今天遇到一则由于Oracle Spatial相关表不存在而导致个别用户无法删除的问题.比较有代表性,记录在此. 1.问题现象 在SYS用户下删除一个普通用户时抛出ORA-00604和ORA-00942 ...
- oracle查询用户权限和角色_详解jenkins配置用户角色权限的实现方法
概述 今天介绍下jenkins应该怎么去配置用户角色权限,注意jenkins 配置用户角色权限需要安装插件 Role Strategy Plugin. 1.安装 Role Strategy Plugi ...
- Oracle删除用户和表空间
Oracle删除用户和表空间 对于单个user和tablespace 来说, 可以使用如下命令来完成. 步骤一: 删除user drop user ×× cascade 说明: 删除了user,只是 ...
- 然后删除oracle用户,oracle删除用户
oracle 动态删除,oracle监听之动态和静态注册,oracle删除数据,oracle删除用户 Oracle 创建删除用户.角色.表空间.导入导出.备份 命令总结 创建删除用户.角色.表空间.导 ...
- Oracle——删除用户以及用户下数据
Oracle中删除用户下所有对象的多种方法 2015-09-22 13:12 8299人阅读 评论(0) 收藏 举报 分类: Oracle数据库基本管理(336) oracle安装升级 ...
- Oracle删除用户下的sequence
--Oracle删除用户下的sequence declare owner_name varchar(20); cursor cur1 is select sequence_name from user ...
- Oracle删除用户以及用户下数据
Oracle删除用户下所有对象的方法未必人人都会,下面就为您介绍两种常用的Oracle删除用户下所有对象的方法,希望对您学习Oracle删除用户方面能有所帮助. 方法1: drop user XXXX ...
- oracle中imp命令详解,ORACLE EXPDP IMPDP数据导入导出命令详解及同EXP IMP命令详细对照...
ORACLE EXPDP IMPDP数据导入导出命令详解及同EXP IMP 命令详细对比 一.EXPDP IMPDP EXP IMP 可以实现 1.可以实现逻辑备份和逻辑恢复 2.可以在数据库用户之间 ...
- Oracle创建表语句(Create table)语法详解及示例
Oracle创建表语句(Create table)语法详解及示例 创建表(Create table)语法详解 1. ORACLE常用的字段类型ORACLE常用的字段类型有 VARCHAR2 (si ...
最新文章
- Java项目:前台+后台精品水果商城系统设计和实现(java+Springboot+ssm+mysql+jsp+maven)
- sql中在查询语句中加判断,控制输出的内容
- .NET Core 3.0之深入源码理解ObjectPool(二)
- .NET中栈和堆的比较1
- brew 无法安装iterm2_MAC 安装OhMyZsh问题记录
- 数据类型(简单数据类型、简单数据类型传参、复杂数据类型传参)
- android 选择多选图片
- 现在工作和技术一般,想下班后充充电多学点东西。然而事实却相反,怎么让自己的学习更加有毅力?...
- [QT入门篇]编程基础知识
- 在Windows搭建私人蚂蚁云笔记服务器
- [线性相关] 皮尔森相关系数的计算及假设检验
- 保险行业的自动化场景
- PHP字体间距设置,CSS如何设置文字间距?
- OpenStack踩坑之路(3)
- The server is invalid. Error occurred reading server credential. Required file or directory ‘serverO
- 如何打造3D立体世界?跟随图片一同探寻
- php怎么查看qq邮箱,thinkphp实现163、QQ邮箱收发邮件的方法
- NuxtJS 项目部署如何部署到nginx
- Java 生鲜电商平台 - API 接口设计之 token、timestamp、sign 具体架构与实现
- cad打印黑白图纸,该如何打印呢?