mysql存储过程使用递归
来源:互联网 发布:开淘宝需要交保证金吗 编辑:程序博客网 时间:2024/06/01 10:04
实现功能为查找节点所有子节点同时更新子节点数据,用递归进行处理。测试时始终报错:
Error Code : 1456 Recursive limit 0 (as set by the max_sp_recursion_depth variable) was exceeded for routine pro_app_rs_right_update···
树的深度不超过10,怎么可能深度出问题,于是百度了一下,网上给了解决方案,加上下面代码就ok:
SET @@max_sp_recursion_depth = 100;
下面是mysql递归调用的源代码:
DROP PROCEDURE IF EXISTS pro_app_rs_right_update_role;DELIMITER//CREATE PROCEDURE pro_app_rs_right_update_role(IN uid VARCHAR(225),IN nCount INT)BEGINDECLARE id VARCHAR(225);DECLARE nLevel INT;DECLARE STOP INT DEFAULT 0;# 声明游标,查找id和权限水平DECLARE cur CURSOR FOR SELECT app_rs_right.id, app_rs_right.LEVEL FROM app_rs_right WHERE app_rs_right.pid = uid;# 声明游标的异常处理,设置一个终止标记DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET STOP = 1;SET @@max_sp_recursion_depth = 100;# 打开游标OPEN cur;# 读取一行数据到游标中FETCH cur INTO id, nLevel;# 判断是否已经到达最后一行数据WHILE STOP <> 1 DO CALL pro_app_rs_right_update_role(id, nCount);UPDATE app_rs_right SET app_rs_right.level = app_rs_right.level + nCount WHERE app_rs_right.id = id;FETCH cur INTO id, nLevel;END WHILE;CLOSE cur;END //# select id, level from app_rs_right where pid = '402881f53fe18bbc013fe19eda7f0003';# call pro_app_rs_right_update_role('402881f53fe18bbc013fe19eda7f0003', 10);
- mysql存储过程使用递归
- Mysql存储过程递归
- MySQL存储过程递归调用
- mysql存储过程使用
- MySQL存储过程使用
- MYSQL存储过程使用
- mysql存储过程使用
- Mysql存储过程使用
- mysql存储过程(递归,交叉表)
- mysql--游标/递归/存储过程/临时表
- mysql存储过程系列一:递归查询
- mysql存储过程-递归赋值国家地区
- SQL在存储过程中使用递归
- MySQL使用递归存储过程实现树状结构,实现Oracle的Connect By 功能
- mysql 中使用存储过程
- mysql 中使用存储过程
- mysql 中使用存储过程
- Php mysql 存储过程使用
- jquery easyUI 中动态 改变 Datagrid中数据的方法
- 每日一题(42) - 二叉树中和为某一值的路径
- C++笔记II(奇数阶魔方的构造技巧)
- 在centos上设置计划任务
- 从 Flash 到 Cocos2d-x
- mysql存储过程使用递归
- Keil中的Code RO-data RW-data ZI-data
- 在安装VMware-tools出现bash:./vmware-install.pl :/usr/bin/perl:bad interpreter:No such file or directory.
- Android解析自定义xml文件--Dom解析xml文件,测试demo(方案四)
- 常用考题收集
- Kidnapped——3、David is alone
- NYOJ-光棍的yy-655
- C# WPF 开发利器 集合
- java笔记(jdk的配置)