oracle中的connect by函式的使用

2021-08-08 11:37:07 字數 1906 閱讀 5836

1。專案中遇到了父子層級關係的問題,剛開始的處理辦法是:先將資料從資料庫中查處理,然後再在**中遍歷,這樣做,**寫的比較臃腫,再加上還有其他的業務要處理,比較麻煩,後來就查詢了一些資料,發現oracle中有個函式connect by可以解決這個問題,寫起來,**也比較簡潔

這個就寫個例子來說明一下這個問題:

1首先建立一張表

create

table text_cen (

id varchar2(20),

name varchar2(20),

parentid varchar2(20)

);

2.給表中插入一些層級的資料

insert

into text_cen(id,name,parentid) values ('001','root',null);

insert

into text_cen(id,name,parentid) values ('001001','大禹','001');

insert

into text_cen(id,name,parentid) values ('001002','龍心','001');

insert

into text_cen(id,name,parentid) values ('001003','五毒聖君','001');

insert

into text_cen(id,name,parentid) values ('001001001','分頁','001001');

insert

into text_cen(id,name,parentid) values ('001001002','遞迴','001001');

insert

into text_cen(id,name,parentid) values ('001001003','排序','001001');

insert

into text_cen(id,name,parentid) values ('001001003001','計數','001001003');

insert

into text_cen(id,name,parentid) values ('001002001','張無忌','001002');

insert

into text_cen(id,name,parentid) values ('001002002','周杰','001002');

insert

into text_cen(id,name,parentid) values ('001003001','林心如','001003');

然後檢視一下表中的資料

現在查詢一下id為001001的子孫後代

select * from text_cen 

start

with id = '001001'

connect

byprior id = parentid

結果:

這個還有一些屬性

level:標記層級級數,最上層節點為1,之後為2、3……。

connect_by_iscycle:標記此節點是否為某乙個祖先節點的父節點,導致迴圈,1為是,0為否。

connect_by_isleaf :標記此節點是否為葉子節點,即沒有子節點,1為是,0為否。

connect_by_root:標記此節點的祖先節點,後面加列名或表示式,取祖先節點的記錄值。

UDP SOCKET程式設計中的connect

udp是乙個無連線的協議,因此socket函式connect 似乎對udp是沒有意義的,然而事實不是這樣。使用connect 來建立與服務程式的連線。與tcp協議不同,udp的connect 並沒有與服務程式三次握手。上面說了udp是非連線的,實際上也可以是連線的。使用連線的udp,kernel可以...

qt中的 connect 函式

1 connect 函式實現的是訊號與槽的關聯。注意 只有qo bject類及其派生的類才能使用訊號和槽的機制 2 函式原型 static qmetaobject connection connect const qobject sender,const char signal,const qobj...

QT中的connect用法總結

首先來看看老版本的 connect 寫法,比較複雜些,需要將訊號和槽進行明確的指定,包括形參。看乙個示例 為方便演示,先自定義乙個 button,然後定義兩個過載的訊號 class mybutton public qwidget 那麼在用這個 button 的時候連線這兩個訊號,按照舊版本的寫法,應...