欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Builder.com.cn : 打印保留 - 深入了解 Oracle 10g 中新型層次查詢(xún)選項
深入了解 Oracle 10g 中新型層次查詢(xún)選項
Scott Stephens
9/8/2005
URL: http://www.zdnet.com.cn/developer/database/story/0,3800066906,39401406,00.htm

我們可以通過(guò)START WITH . . . CONNECT BY . . .子句來(lái)實(shí)現SQL的 層次查詢(xún),而Oracle 10g 為其添加許多了新的偽列。十多年以來(lái),Oracle SQL 具有依照層次關(guān)系進(jìn)行查詢(xún)的功能。例如,你可以指定一個(gè)起始條件,然后根據一個(gè)或多個(gè)連接條件來(lái)確定孩子行的內容。舉例來(lái)說(shuō),現在假設我有一個(gè)表,里面記錄了世界上的某些地區,其表結構如下:

create table hier
(
parent varchar2(30),
child varchar2(30)
);

insert into hier values(null,‘Asia‘);
insert into hier values(null,‘Australia‘);
insert into hier values(null,‘Europe‘);
insert into hier values(null,‘North America‘);
insert into hier values(‘Asia‘,‘China‘);
insert into hier values(‘Asia‘,‘Japan‘);
insert into hier values(‘Australia‘,‘New South Wales‘);
insert into hier values(‘New South Wales‘,‘Sydney‘);
insert into hier values(‘California‘,‘Redwood Shores‘);
insert into hier values(‘Canada‘,‘Ontario‘);
insert into hier values(‘China‘,‘Beijing‘);
insert into hier values(‘England‘,‘London‘);
insert into hier values(‘Europe‘,‘United Kingdom‘);
insert into hier values(‘Japan‘,‘Osaka‘);
insert into hier values(‘Japan‘,‘Tokyo‘);
insert into hier values(‘North America‘,‘Canada‘);
insert into hier values(‘North America‘,‘USA‘);
insert into hier values(‘Ontario‘,‘Ottawa‘);
insert into hier values(‘Ontario‘,‘Toronto‘);
insert into hier values(‘USA‘,‘California‘);
insert into hier values(‘United Kingdom‘,‘England‘);

那么我們可以使用START WITH . . . CONNECT BY . . .從句將父級地區與孩子地區連接起來(lái),并將其層次等級顯示出來(lái)。

column child format a40
select level,lpad(‘ ‘,level*3)||child child
from hier
start with parent is null
connect by prior child = parent;

LEVEL CHILD
---------- --------------------------
1 Asia
2 China
3 Beijing
2 Japan
3 Osaka
3 Tokyo
1 Australia
2 New South Wales
3 Sydney
1 Europe
2 United Kingdom
3 England
4 London
1 North America
2 Canada
3 Ontario
4 Ottawa
4 Toronto
2 USA
3 California
4 Redwood Shores

自從Since Oracle 9i 開(kāi)始,就可以通過(guò) SYS_CONNECT_BY_PATH 函數實(shí)現將從父節點(diǎn)到當前行內容以“path”或者層次元素列表的形式顯示出來(lái)。 如下例所示:

column path format a50
select level,sys_connect_by_path(child,‘/‘) path
from hier
start with parent is null
connect by prior child = parent;

LEVEL PATH
-------- --------------------------------------------
1 /Asia
2 /Asia/China
3 /Asia/China/Beijing
2 /Asia/Japan
3 /Asia/Japan/Osaka
3 /Asia/Japan/Tokyo
1 /Australia
2 /Australia/New South Wales
3 /Australia/New South Wales/Sydney
1 /Europe
2 /Europe/United Kingdom
3 /Europe/United Kingdom/England
4 /Europe/United Kingdom/England/London
1 /North America
2 /North America/Canada
3 /North America/Canada/Ontario
4 /North America/Canada/Ontario/Ottawa
4 /North America/Canada/Ontario/Toronto
2 /North America/USA
3 /North America/USA/California
4 /North America/USA/California/Redwood Shores

在 Oracle 10g 中,還有其他更多關(guān)于層次查詢(xún)的新特性 。例如,有的時(shí)候用戶(hù)更關(guān)心的是每個(gè)層次分支中等級最低的內容。那么你就可以利用偽列函數CONNECT_BY_ISLEAF來(lái)判斷當前行是不是葉子。如果是葉子就會(huì )在偽列中顯示“1”,如果不是葉子而是一個(gè)分支(例如當前內容是其他行的父親)就顯示“0”。下給出了一個(gè)關(guān)于這個(gè)函數使用的例子:

select connect_by_isleaf,sys_connect_by_path(child,‘/‘) path
from hier
start with parent is null
connect by prior child = parent;

CONNECT_BY_ISLEAF PATH
---------------------------------- ------------
0 /Asia
0 /Asia/China
1 /Asia/China/Beijing
0 /Asia/Japan
1 /Asia/Japan/Osaka
1 /Asia/Japan/Tokyo
0 /Australia
0 /Australia/New South Wales
1 /Australia/New South Wales/Sydney
0 /Europe
0 /Europe/United Kingdom
0 /Europe/United Kingdom/England
1 /Europe/United Kingdom/England/London
0 /North America
0 /North America/Canada
0 /North America/Canada/Ontario
1 /North America/Canada/Ontario/Ottawa
1 /North America/Canada/Ontario/Toronto
0 /North America/USA
0 /North America/USA/California
1 /North America/USA/California/Redwood Shores

在Oracle 10g 中還有一個(gè)新操作——CONNECT_BY_ROOT。 它用在列名之前用于返回當前層的根節點(diǎn)。如下面的例子,我可以顯示出層次結構表中當前行數據所對應的最高等級節點(diǎn)的內容。

select connect_by_root child,sys_connect_by_path(child,‘/‘) path
from hier
start with parent is null
connect by prior child = parent;

CONNECT_BY_ROOT PATH
------------------------------ --------
Asia /Asia
Asia /Asia/China
Asia /Asia/China/Beijing
Asia /Asia/Japan
Asia /Asia/Japan/Osaka
Asia /Asia/Japan/Tokyo
Australia /Australia
Australia /Australia/New South Wales
Australia /Australia/New South Wales/Sydney
Europe /Europe
Europe /Europe/United Kingdom
Europe /Europe/United Kingdom/England
Europe /Europe/United Kingdom/England/London
North America /North America
North America /North America/Canada
North America /North America/Canada/Ontario
North America /North America/Canada/Ontario/Ottawa
North America /North America/Canada/Ontario/Toronto
North America /North America/USA
North America /North America/USA/California
North America /North America/USA/California/Redwood Shores

在Oracle 10g 之前的版本中,如果在你的樹(shù)中出現了環(huán)狀循環(huán)(如一個(gè)孩子節點(diǎn)引用一個(gè)父親節點(diǎn)),Oracle 就會(huì )報出一個(gè)錯誤提示:“ ORA-01436: CONNECT BY loop in user data”。如果不刪掉對父親的引用就無(wú)法執行查詢(xún)操作。而在 Oracle 10g 中,只要指定“NOCYCLE”就可以進(jìn)行任意的查詢(xún)操作。與這個(gè)關(guān)鍵字相關(guān)的還有一個(gè)偽列——CONNECT_BY_ISCYCLE, 如果在當前行中引用了某個(gè)父親節點(diǎn)的內容并在樹(shù)中出現了循環(huán),那么該行的偽列中就會(huì )顯示“1”,否則就顯示“0”。如下例所示:

create table hier2
(
parent number,
child number
);

insert into hier2 values(null,1);
insert into hier2 values(1,2);
insert into hier2 values(2,3);
insert into hier2 values(3,1);

select connect_by_iscycle,sys_connect_by_path(child,‘/‘) path
from hier2
start with parent is null
connect by nocycle prior child = parent;

CONNECT_BY_ISCYCLE PATH
------------------ -------
0 /1
0 /1/2
1 /1/2/3

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
oracle之sys_connect_by_path(行轉列挺好用的) - lky5387...
數據庫學(xué)習筆記
ASIA Pacific will surpass North America in e-commerce spending
Mapcarta---地圖
美麗的蜂鳥(niǎo)(2)
參考網(wǎng)絡(luò )自制的gps.conf文件,HTC G12凱立德秒搜秒定!
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久