MySQL 函数过程递归
作者:xling 来源:xling博客 发布时间:2008-07-25 19:32:00
标签:mysql,错误,递归
目的是想通过给定一个ID,取出所有的子ID,包括子ID的子ID。
一开始写成FUNCTION,因为FUNCTION调用方便,但是报错:
ERROR 1424 (HY000): Recursive stored functions and triggers are not allowed
就是说:mysql不支持 函数递归,查了一下,MYSQL支持过程递归。
于是改成过程:
CREATE PROCEDURE USNOWER_P_SUB_CAT(IN IN_ID INT,OUT OUT_IDS VARCHAR(1000))
BEGIN
DECLARE V_STOP BOOLEAN DEFAULT FALSE;
DECLARE V_ID INT;
DECLARE V_SUB_IDS VARCHAR(1000);
DECLARE V_IDS VARCHAR(1000);
DECLARE CUR1 CURSOR FOR SELECT ID FROM USNOWER_ART_CAT WHERE FA_ID = IN_ID;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET V_STOP = TRUE;
SET @@max_sp_recursion_depth = 10;
OPEN CUR1;
LAB1:WHILE NOT V_STOP DO
FETCH CUR1 INTO V_ID;
IF V_STOP THEN
LEAVE LAB1;
END IF;
CALL USNOWER_P_SUB_CAT(V_ID,V_SUB_IDS);
SET V_IDS = CONCAT_WS(',',V_IDS,V_ID,V_SUB_IDS);
END WHILE LAB1;
SET OUT_IDS = V_IDS;
END//
开始没加红色的那句,报错:
ERROR 1456 (HY000): Recursive limit 0 (as set by the max_sp_recursion_depth variable) was exceeded for routine ***
SELECT @@max_sp_recursion_depth ,结果是0,
我这小小的递归跟本不可能超过10层,所以就在过程里加入了红色的那句。
运行,一切OK,
就是调试太麻烦了,怀念TOAD做ORACLE的时候,那个叫做方便。
0
投稿
猜你喜欢
- 1.算法:(设查找的数组期间为array[low, high])(1)确定该期间的中间位置K(2)将查找的值T与array[k]比较。若相等
- 这篇文章主要介绍了简单了解为什么python函数后有多个括号,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- 最近游戏项目在多个国家上线,每个国家都对应两份儿svn目录(一份是本地策划目录,一份是线上目录)。于是乎维护变得很烦躁。需要先更新本地策划s
- 一、文件操作前言:什么是计算机的流?"流"指的是在不同的输入/输出等设备(键盘、内存、显示器、音响等)之间进行传递数据。
- python / 和 % 和 //(地板除)用于对数据进行除法运算。python中 // 和 / 和 %简介python中与除法相关的三个运
- 4 月 27 日,GitHub 趋势榜第 3 位是一个用 Python 编码实现的算法库,Star 数早已达到 26000+链接:https
- 一):视图的定义视图是由基于一个或多个表的一个查询所定义的虚拟表,它将查询的具体定义保存起来,视图不包含任何数据。视图在操作上和数据表没有什
- TensorFlow训练网络有两种方式,一种是基于tensor(array),另外一种是迭代器两种方式区别是:第一种是要加载全部数据形成一个
- 视频加密流程图:后端获取保利威的视频播放授权token,提供接口api给前端参考文档:http://dev.polyv.net/2019/v
- 前言:有读者可能会一脸懵?啥是索引潜水?你给起的名字的吗?有没有索引蛙泳?这个名字还真不是我起的,今天要讲的知识点就叫索引潜水(Index
- 在Oracle本地数据库端执行赋权dbuser帐号SQL> grant create database link to dbuser;
- 一、python批量解压提示:如果是重要数据解压前请先备份,解压后会覆盖原压缩文件!!解压前:解压后:文件名为英文:文件名中包含中文:代码如
- 今天因为程序里面要把写入数据库的html源代码以html源编码的形式显示在页面里面,而不要被浏览器解释成。。找了N久都不知道怎么做后来看了一
- numpy之sum()sum(a)默认为对输入参数中的所有元素进行求和>>> aarray([ 0, 1, &
- 如果说哪个开源程序不需要介绍大家就认识,那一定是phpMyAdmin,一款流行的MySQL数据库的Web管理界面。MySQL是全球最流行的W
- JOIN对于接触过数据库的人,这个词都不陌生,而且很多人很清楚各种JOIN,还有很多人对这个理解也不是很透彻。假设我们有两个表,Table_
- 任何使用yield的函数都称之为生成器,如:def count(n): while n > 0: &nb
- 这篇文章主要介绍了微信小程序顶部导航栏可滑动并选中放大,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- 在项目中,尤其是pc端的时候,我们在用户登录后会给前端返回一个标识,来判断用户是否登录,这个标识大多数都是用户的id  
- 使用python下的stmpmail 模块,可以实现邮件的轻松和定制化发送,不过在发给多用户时,可能会对该模块理解不到位,造成发送异常或信息