程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle Contact By的使用,oraclecontact

Oracle Contact By的使用,oraclecontact

編輯:Oracle教程

Oracle Contact By的使用,oraclecontact


1.概述

Oracle “CONNECT BY”是層次查詢子句,一般用於樹狀或者層次結果集的查詢

 

2.使用方式

2.1.通過Connect by 生成序列

Oracle 構造一個月份的天數

select to_date('200809','yyyymm')+(rownum-1) s_date from dual  
connect by 
rownum<=last_day(to_date('200809','yyyymm')) - to_date('200809','yyyymm') + 1

生成1-10的一個序列

SELECT ROWNUM FROM DUAL CONNECT BY ROWNUM <= 10

2.2實現樹狀查詢結果

create table DEP
(
  DEPID      number(10) not null,
  DEPNAME    varchar2(256),
  UPPERDEPID number(10)
)
---------------------------------------------------------------------
INSERT INTO DEP(DEPID, DEPNAME, UPPERDEPID) VALUES (0, '總經辦', null);
INSERT INTO DEP(DEPID, DEPNAME, UPPERDEPID) VALUES (1, '開發部', 0);
INSERT INTO DEP(DEPID, DEPNAME, UPPERDEPID) VALUES (2, '測試部', 0);
INSERT INTO DEP(DEPID, DEPNAME, UPPERDEPID) VALUES (3, 'Sever開發部', 1);
INSERT INTO DEP(DEPID, DEPNAME, UPPERDEPID) VALUES (4, 'Client開發部', 1);
INSERT INTO DEP(DEPID, DEPNAME, UPPERDEPID) VALUES (5, 'TA測試部', 2);
INSERT INTO DEP(DEPID, DEPNAME, UPPERDEPID) VALUES (6, '項目測試部', 2);
---------------------------------------------------------------------

SELECT RPAD( ' ', 2*(LEVEL-1), '-' ) || DEPNAME "DEPNAME",
CONNECT_BY_ROOT DEPNAME "ROOT",
CONNECT_BY_ISLEAF "ISLEAF",
LEVEL ,
SYS_CONNECT_BY_PATH(DEPNAME, '/') "PATH"
FROM DEP
START WITH UPPERDEPID IS NULL
CONNECT BY PRIOR DEPID = UPPERDEPID;

DEMO下載

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved