日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle 删除用户 递归,ORACLE递归查询遍历详解

發布時間:2023/12/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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递归查询遍历详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。