您好,欢迎来到暴趣科技网。
搜索
您的当前位置:首页mysql 树展现 id pid_MySQL 存储过程实现 id-pid结构的树形数据展示

mysql 树展现 id pid_MySQL 存储过程实现 id-pid结构的树形数据展示

来源:暴趣科技网

set max_sp_recursion_depth=255;

call showChildLst(56);

DROP PROCEDURE IF EXISTS `createChildLst`;

delimiter ;;

CREATE DEFINER=`root`@`localhost` PROCEDURE `createChildLst`(IN pid INT,IN nDepth INT)

COMMENT '入口过程'

BEGIN

DECLARE done INT DEFAULT 0;

DECLARE b INT;

DECLARE cur1 CURSOR FOR SELECT id FROM sheet1 where parent_id=pid order by sort;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; ### 这里相当于定义了一种异步事件,当事件发生会设置变量值

OPEN cur1;

FETCH cur1 INTO b;

INSERT INTO tmpLst VALUES (NULL,pid,nDepth,done);

WHILE done=0 DO

CALL createChildLst(b,nDepth+1);

FETCH cur1 INTO b;

END WHILE;

CLOSE cur1;

END

;;

delimiter ;

-- ----------------------------

-- Procedure structure for `showChildLst`

-- ----------------------------

DROP PROCEDURE IF EXISTS `showChildLst`;

delimiter ;;

CREATE DEFINER=`root`@`localhost` PROCEDURE `showChildLst`(IN pid INT)

COMMENT '递归过程'

BEGIN

CREATE TEMPORARY TABLE IF NOT EXISTS tmpLst(sno int primary key auto_increment,id int,depth int,isLeaf int);

DELETE FROM tmpLst;

CALL createChildLst(pid,0);

select tmpLst.*,sheet1.* from tmpLst,sheet1 where tmpLst.id=sheet1.id order by tmpLst.sno;

END

;;

delimiter ;

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoquwan.com 版权所有 湘ICP备2024080961号-7

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务