mysql树查询及分层级
来源:互联网 发布:python 列表转换字典 编辑:程序博客网 时间:2024/05/18 02:04
drop procedure proc_fi_deptment;
DELIMITER //
create PROCEDURE proc_fi_deptment()
BEGIN
/* 标记是否出错 /
declare t_error int default 0;
/* 标记是否跳出循环 /
DECLARE flag int default 1;
#层级
DECLARE cj int default 0;
#下层级
DECLARE cjnext int default 0;
#个数
DECLARE sl int default 0;
/** 如果出现sql异常,则将t_error设置为1后继续执行后面的操作 */ declare continue handler for sqlexception set t_error=1; # 出错处理# 开始事务START TRANSACTION;
#创建未分层级的临时表
delete from ofs_fi_department_temporary ;
insert into ofs_fi_department_temporary
SELECT A.KOKRS,
B.SPRAS,
A.PRCTR DEPT_CODE,
B.KTEXT DEPT_NAME,
A.ZWDLXBM DEPT_TYPE_CODE,
B.ZWDLXMC DEPT_TYPE_NAME,
A.ZZHPRCTR PARENT_DEPT_CODE,
A.DATAB,
A.DATBI,
A.LOCK_IND LOCK_IND,
A.DELFG,
A.LASTUPDATE,
null
FROM sap_fi_network A
LEFT JOIN sap_fi_network_children B
ON A.KOKRS = B.KOKRS
AND A.PRCTR = B.PRCTR
AND A.DATBI = B.DATBI
WHERE A.DELFG IS NULL
AND SYSDATE() BETWEEN A.DATAB AND A.DATBI ;
update ofs_fi_department_temporary ofd set ofd.`level` = 0,ofd.PARENT_DEPT_CODE = nullwhere ofd.DEPT_CODE = '001';create or replace table ofs_fi_department as select * from ofs_fi_department_temporary where DEPT_CODE= '001';ALTER TABLE `ofs_fi_department`ADD INDEX `DEPT_CODE` (`DEPT_CODE`),ADD INDEX `PARENT_DEPT_CODE` (`PARENT_DEPT_CODE`),ADD INDEX `level` (`level`);while flag = 1 do select count(ofd1.DEPT_CODE) into sl from ofs_fi_department ofd1 where ofd1.`level`=cj ; if sl > 0 then set cjnext = cj+1; insert into ofs_fi_department select * from ofs_fi_department_temporary ofd2 where ofd2.PARENT_DEPT_CODE in (select ofd3.DEPT_CODE from ofs_fi_department ofd3 where ofd3.`level` = cj); update ofs_fi_department ofd4 set ofd4.`level` = cjnext where ofd4.`level` is null; commit; set cj = cj+1; else set flag =0; end if;end while; if t_error=1 then rollback; -- 事务回滚 else commit; -- 事务提交 end if;
END ;
//
DELIMITER ;
call proc_fi_deptment();
- mysql树查询及分层级
- Oracle树结构查询及层级排序
- 【Mysql】树路径,层级
- mysql 分表查询
- mysql分表+查询
- mysql分时间段查询
- oracle查询树形结构某层级节点及叶子节点
- Oracle层级(树形结构)查询及优化
- Mysql查询时区分大小写
- mysql 查询字段分大小写
- oracle 部门层级查询
- SQL层级查询
- oracle 部门层级查询
- sql层级数据查询
- ORACEL 树形 层级 查询
- oracle 层级查询
- oracle的层级查询
- MySQL查询时区分大小写的方法
- ReactNative 学习笔记Component 和createClass区别
- 高德地图的定位
- c#中如何跨线程调用windows窗体控件?
- AFNetworking实现程序重新启动时的断点续传
- 随机数https://en.wikipedia.org/wiki/Linear_congruential_generator
- mysql树查询及分层级
- C++的基本数据类型
- 关于TextView文字下划线
- C++设计模式[二十二]模板方法模式
- 并发编程杂记
- 让ubuntu串口和USB设备不用root权限访问
- 红黑树的C++实现(2)
- 并发编程专题
- ImageLoader的使用