日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
一個(gè)Oracle遞歸查詢的實(shí)例代碼分析

Oracle數(shù)據(jù)庫(kù)遞歸查詢用途非常的廣泛,我們做遞歸查詢首先要定義好遞歸函數(shù),以及它的參數(shù)和返回值,然后實(shí)現(xiàn)查詢。本文通過一個(gè)代碼的實(shí)例講解介紹了這一過程,接下來我們就開始介紹。

一、樹型表結(jié)構(gòu):

節(jié)點(diǎn)ID 上級(jí)ID 節(jié)點(diǎn)名稱

二、公式:

 
 
 
  1. select 節(jié)點(diǎn)ID,節(jié)點(diǎn)名稱,level  
  2.  
  3. from 表  
  4.  
  5. connect by prior 節(jié)點(diǎn)ID=上級(jí)節(jié)點(diǎn)ID  
  6.  
  7. start with 上級(jí)節(jié)點(diǎn)ID=節(jié)點(diǎn)值 

說明:

1、常見的樹形結(jié)構(gòu)為公司組織機(jī)構(gòu)、地區(qū)……

2、求節(jié)點(diǎn)ID以上的結(jié)構(gòu),或以上的結(jié)構(gòu),將“節(jié)點(diǎn)ID=上級(jí)節(jié)點(diǎn)ID”左右順序換一下即可。

3、Level為Oracle的特殊字段,表示“層”的意思。當(dāng)前節(jié)點(diǎn)ID的下一層節(jié)點(diǎn)為“1”。

測(cè)試SQL:

說明1、求002以下(或以上)所有子節(jié)點(diǎn)和層次(動(dòng)態(tài):總是從1開始算),但不包括自身。

說明2、如果求002以上的節(jié)點(diǎn),則“connect by prior topno=departno”,“=”兩邊的條件換位即可。

 
 
 
  1. select departno,departname,level  
  2.  
  3. from dept  
  4.  
  5. connect by prior departno=topno 
  6.  
  7. start with topno='002'; 

測(cè)試數(shù)據(jù):

 
 
 
  1. create table Dept(  
  2.  
  3. DepartNO varchar2(10),  
  4.  
  5. DepartName varchar2(20),  
  6.  
  7. TopNo varchar2(10));  
  8.  
  9. insert into Dept values('001',' 董事會(huì)','0');  
  10.  
  11. insert into Dept values('002','總裁辦 ','001');  
  12.  
  13. insert into Dept values('003','財(cái)務(wù)部 ','001');  
  14.  
  15. insert into Dept values('004','市場(chǎng)部 ','002');  
  16.  
  17. insert into Dept values('005','公關(guān)部 ','002');  
  18.  
  19. insert into Dept values('006','銷售部 ','002');  
  20.  
  21. insert into Dept values('007','分銷處 ','006');  
  22.  
  23. insert into Dept values('008','業(yè)務(wù)拓展處','004');  
  24.  
  25. insert into Dept values('009','銷售科','007'); 

向前查,比如:

 
 
 
  1. select distinct departno,departname,level  
  2.  
  3. from dept  
  4.  
  5. connect by prior topno=departno 
  6.  
  7. start with  
  8.  
  9. departno='005'; 

那么其實(shí)是查005自身以及上級(jí), 所以結(jié)果是005,002,001。

總結(jié):寫遞歸最關(guān)鍵的要定義出來遞歸函數(shù),遞歸函數(shù)最關(guān)鍵的要定義出來它的參數(shù)和它的返回值。參數(shù)最重要,分析一下參數(shù)怎么去定義?這時(shí)候要分析遞歸的過程,遞歸過程什么樣呢?根據(jù)它的id 找它的父id,根據(jù)它的父id 找到它的孩子,根據(jù)它的孩子再找到它的孩子。那么分析這個(gè)參數(shù)肯定是一個(gè)id,因?yàn)橹挥袀鬟M(jìn)來id,才知道怎么去找這個(gè)id。

關(guān)于Oracle數(shù)據(jù)庫(kù)的遞歸查詢就介紹這么多,謝謝各位一直以來的支持!

【編輯推薦】

  1. 共享database獨(dú)立Schema構(gòu)建SAAS平臺(tái)
  2. 利用Sql Server將Excel中的數(shù)據(jù)導(dǎo)入Oracle
  3. Oracle跟蹤文件分析工具TKPROF使用簡(jiǎn)介
  4. 環(huán)境變量導(dǎo)致ASP.Net無法連接Oracle的一個(gè)案例
  5. PLSQL Developer8連接Oracle 10g X64版報(bào)錯(cuò)的解決

分享名稱:一個(gè)Oracle遞歸查詢的實(shí)例代碼分析
瀏覽路徑:http://m.5511xx.com/article/djoidei.html