orale 树形

https://blog.csdn.net/WuLex/article/details/82773890 prior 用法

直接调用FUNCTION TABLE(hrorg.prior_org_level(o.org_id)) 传入参数org_id

CREATE OR REPLACE FUNCTION “HRORG”.“PRIOR_ORG_LEVEL”(v_org_id in varchar2)
return hrorg.org_level_table is
t_org_level hrorg.org_level_table := hrorg.org_level_table();
begin
for v_org in (SELECT v_org_id as ORG_ID,
wm_concat(ORG_ID1) as ORG_ID1,
wm_concat(ORG_NAME1) as ORG_NAME1,
–wm_concat(ORG_LEVEL_2) as ORG_LEVEL_2,
wm_concat(ORG_ID2) as ORG_ID2,
wm_concat(ORG_NAME2) as ORG_NAME2,
–wm_concat(ORG_LEVEL_3) as ORG_LEVEL_3,
wm_concat(ORG_ID3) as ORG_ID3,
wm_concat(ORG_NAME3) as ORG_NAME3,
– wm_concat(ORG_LEVEL_4) as ORG_LEVEL_4,
wm_concat(ORG_ID4) as ORG_ID4,
wm_concat(ORG_NAME4) as ORG_NAME4,
– wm_concat(ORG_LEVEL_5) as ORG_LEVEL_5,
wm_concat(ORG_ID5) as ORG_ID5,
wm_concat(ORG_NAME5) as ORG_NAME5,
– wm_concat(ORG_LEVEL_6) as ORG_LEVEL_6,
wm_concat(ORG_ID6) as ORG_ID6,
wm_concat(ORG_NAME6) as ORG_NAME6,
– wm_concat(ORG_LEVEL_7) as ORG_LEVEL_7,
wm_concat(ORG_ID7) as ORG_ID7,
wm_concat(ORG_NAME7) as ORG_NAME7,
– wm_concat(ORG_LEVEL_8) as ORG_LEVEL_8,
wm_concat(ORG_ID8) as ORG_ID8,
wm_concat(ORG_NAME8) as ORG_NAME8,
– wm_concat(ORG_LEVEL_9) as ORG_LEVEL_9,
wm_concat(ORG_ID9) as ORG_ID9,
wm_concat(ORG_NAME9) as ORG_NAME9,
replace(wm_concat(ORG_NAME), ‘,’, ‘/’) ORG_NAME_ALL
from (SELECT ORG_ID,
ORG_NAME,
ORG_LEVEL,
decode(ORG_LEVEL, 1, 1) ORG_LEVEL1,
decode(ORG_LEVEL, 1, ORG_ID) ORG_ID1,
decode(ORG_LEVEL, 1, ORG_NAME) ORG_NAME1,
decode(ORG_LEVEL, 2, 2) ORG_LEVEL2,
decode(ORG_LEVEL, 2, ORG_ID) ORG_ID2,
decode(ORG_LEVEL, 2, ORG_NAME) ORG_NAME2,
decode(ORG_LEVEL, 3, 3) ORG_LEVEL3,
decode(ORG_LEVEL, 3, ORG_ID) ORG_ID3,
decode(ORG_LEVEL, 3, ORG_NAME) ORG_NAME3,
decode(ORG_LEVEL, 4, 4) ORG_LEVEL4,
decode(ORG_LEVEL, 4, ORG_ID) ORG_ID4,
decode(ORG_LEVEL, 4, ORG_NAME) ORG_NAME4,
decode(ORG_LEVEL, 5, 5) ORG_LEVEL5,
decode(ORG_LEVEL, 5, ORG_ID) ORG_ID5,
decode(ORG_LEVEL, 5, ORG_NAME) ORG_NAME5,
decode(ORG_LEVEL, 6, 6) ORG_LEVEL6,
decode(ORG_LEVEL, 6, ORG_ID) ORG_ID6,
decode(ORG_LEVEL, 6, ORG_NAME) ORG_NAME6,
decode(ORG_LEVEL, 7, 7) ORG_LEVEL7,
decode(ORG_LEVEL, 7, ORG_ID) ORG_ID7,
decode(ORG_LEVEL, 7, ORG_NAME) ORG_NAME7,
decode(ORG_LEVEL, 8, 8) ORG_LEVEL8,
decode(ORG_LEVEL, 8, ORG_ID) ORG_ID8,
decode(ORG_LEVEL, 8, ORG_NAME) ORG_NAME8,
decode(ORG_LEVEL, 9, 9) ORG_LEVEL9,
decode(ORG_LEVEL, 9, ORG_ID) ORG_ID9,
decode(ORG_LEVEL, 9, ORG_NAME) ORG_NAME9
FROM ORGANIZATION oo
START WITH oo.ORG_ID = v_org_id
CONNECT BY prior oo.ORG_PARENT_DEPT = oo.ORG_ID
ORDER BY oo.ORG_LEVEL)) loop
t_org_level.extend;
t_org_level(t_org_level.count) := hrorg.type_org_level(v_org.org_id,
v_org.org_id1,
v_org.ORG_NAME1,
v_org.org_id2,
v_org.org_name2,
v_org.org_id3,
v_org.org_name3,
v_org.org_id4,
v_org.org_name4,
v_org.org_id5,
v_org.org_name5,
v_org.org_id6,
v_org.org_name6,
v_org.org_id7,
v_org.org_name7,
v_org.org_id8,
v_org.org_name8,
v_org.org_id9,
v_org.org_name9,
v_org.org_name_all);
end loop;
return t_org_level;
end;

Oracle树形结构查询是指在Oracle数据库中对树状结构进行层级递归查询的功能。树状结构通常由根节点、父节点、子节点和叶节点组成。通过在一张表中使用两个字段,dept_id和par_dept_id,可以构建出树状结构。其中,par_dept_id是另外一条父级记录的dept_id。树形结构查询的基本语法如下: SELECT [LEVEL], * FROM table_name START WITH 条件1 CONNECT BY PRIOR 条件2 WHERE 条件3 ORDER BY 排序字段 这个查询语句中,LEVEL表示当前节点所处的层级,table_name是要查询的表名,条件1用于指定根节点的条件,条件2是用来指定当前节点与父节点的关系,条件3是用于过滤结果的条件。最后的ORDER BY语句用于对结果进行排序。 更多关于Oracle树状结构查询的实战解析和测试数据可以参考博客文章:。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Oracle递归树形结构查询功能](https://download.csdn.net/download/weixin_38610012/12823647)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [oracle树状结构层级查询小结--connect by等](https://blog.csdn.net/dboy_willow/article/details/81629945)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值