每一個子節點有相對的一個父節點
而我下了遞回查詢的語法如下:
select *
from pwp_menu
start with PARENT_ID is null
connect by prior NODE_ID=PARENT_ID
跑出如上圖所示
請問有辦法利用plsql開發出後端資料庫已經跑好父階子階的資料表嗎?
mnchi830223提到:
select *
from pwp_menu
start with PARENT_ID is null
connect by prior NODE_ID=PARENT_ID
select * from pwp_menu start with NODE_ID = 120906 connect by prior NODE_ID=PARENT_ID
mnchi830223提到:
請問有辦法利用plsql開發出後端資料庫已經跑好父階子階的資料表嗎?
終於看懂你的問題
一般來說
很多人都是以為敲進去的順序
會是下SELECT 的顯示順序
其實是沒有順序的除非你下ORDER BY
(已經跑好父階子階的資料表)
我們用 Recursive_Read procedure
去跑出父子階順序確認時會上 Sequence_ID
下 SELECT * FROM AD_Menu ORDER BY Sequence_ID;
所以我用你說的方法 去寫一個procedure嗎?
是的
自我呼叫去初下一層
create or replace PROCEDURE find_tree (userid in NUMBER,fid in NUMBER,gid in NUMBER) is
cursor c is
select node_id from pwp_menu where parent_id is null and user_id =userid ;
cursor c1 is
select node_id from pwp_menu where parent_id =fid;
cursor c2 is
select node_id from pwp_menu where parent_id=gid;
BEGIN
for ct in c LOOP
if getchild(A)>0 THEN
for ct2 in c1 loop
if getchild(A)=1 THEN
C1.NODE_ID=fid;
end if;
for ct3 in c2 loop
if getchild(A)=2 THEN
C2.NODE_ID=GID
end if
end loop;
COMMIT;
END;
CREATE OR REPLACE FUNCTION getchild (NODEID NUMBER) RETURN Number IS
gCNT NUMBER;
Begin
select COUNT(1) INTO gCNT from pwp_menu where parent_id=NODEID;
reture gCNT;
END getchild;
現在卡在迴圈那不知道如何寫