Oracle9i 10g 樹查詢特性

2021-08-25 06:53:32 字數 1515 閱讀 9878

例子:

select (select id from test where level = a.lv start with id=a.id connect by id = prior f_id) f_id,idfrom (select id,level lvfrom test connect by id = fid) a

查詢test表裡面所以字節點的父節點

10g 的新特性

第乙個偽列是connect_by_isleaf,用來標識查詢結果中的樹葉資訊

對於所有包含分支的節點,connect_by_isleaf偽列返回0,如果是不包含分支的頁節點,則返回1。

sql> select id, connect_by_isleaf from test

2 start with fid = 0

3 connect by prior id = fid;

id connect_by_isleaf

---------- -----------------

1 02 0

201 1

202 1

203 1

204 1

205 1

206 1

207 1

3 0301 1

302 1

303 1

已選擇13行。

第二個偽列是connect_by_iscycle,用來標識connect by中是否存在迴圈的情況。和這個偽列一起說明的還有乙個nocycle命令,這個命令允許connect by碰到迴圈的情況下可以跳出迴圈繼續執行。

這個功能十分有用。有時候會將樹的根節點的父id設定為自己,但是這種情況在10g以前的版本利用樹狀查詢就會報錯,而現在使用nocycle命令可以輕易的解決這個問題。

sql> update test set fid = 1 where id = 1;

已更新1 行。

sql> commit;

提交完成。

sql> select id from test start with id = 1 connect by prior id = fid;

error:

ora-01436:

使用者資料中的connect by 迴圈

未選定行

sql> select id, connect_by_iscycle from test

2 start with id = 1

3 connect by nocycle prior id = fid;

id connect_by_iscycle

---------- ------------------

1 12 0

201 0

202 0

203 0

204 0

205 0

206 0

207 0

3 0301 0

302 0

303 0

已選擇13行。

10g樹狀查詢的新增功能用法簡單,而且使得樹狀查詢使用更加方便。

Oracle 9i 10g 預設的使用者和密碼

sys change on install system manager sysman oem temp scott tiger aqadm aqadm dbsnmp dbsnmp 使用者名稱 口令 登入身份及說明 sys change on install sysdba或sysoper,但不能以n...

手動製作Oracle9i 10g客戶端的實用方法

其實,現在有了instant client,可能真的沒有必要去嘗試製作oracle客戶端。這裡,我想說說自己的理由 1.instant client的bug遠多於oracle客戶端package,這個是經過很多實踐發現的。2.愛好技術的人都想看看乙個client包,到底如何提取,即算有些冗餘,也沒多...

oracle9i匯出oracle 10g的大字段

oracle9i匯出oracle 10g的大字段 錯誤現象 用9i的exp匯出時錯誤如下 f oracle bin exp wssw foresee cradle203 file d sb sbxx zb.dmp tables sb sbxx zb export release 9.2.0.1.0 ...