MySQL 函数过程递归

作者:xling 来源:xling博客 时间:2008-07-25 19:32:00 

目的是想通过给定一个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的时候,那个叫做方便。

标签:mysql,错误,递归
0
投稿

猜你喜欢

  • 优化次数过多的循环

    2009-11-12 12:35:00
  • 现代 javscript 编程

    2011-04-21 16:24:00
  • 中英文双语导航菜单

    2007-05-11 17:04:00
  • 如何做一个文本搜索?

    2010-07-12 19:00:00
  • Oracle 触发器的使用小结

    2009-05-24 19:54:00
  • 长文章自动分页asp实例-支持HTML

    2007-10-10 21:29:00
  • 用browsercam做用户登录后页面的兼容性测试

    2008-12-29 12:05:00
  • 两个css郁闷的发现

    2007-12-16 15:31:00
  • 如何实现html表格里隔行换色

    2007-10-19 13:42:00
  • asp获取客户端的MAC地址

    2007-08-17 10:58:00
  • 数字人组件反写[asp组件开发实例1]

    2009-06-09 13:10:00
  • photoshop快捷键大全及使用技巧

    2007-10-26 07:40:00
  • xhtml+css页面制作过程中问题的解决方案

    2008-08-05 18:00:00
  • Quickwork For Asp -实战之后台管理

    2009-12-31 19:13:00
  • document.createElement()用法及注意事项

    2008-04-21 15:16:00
  • 各种JavaScript开发工具比较

    2007-10-23 13:29:00
  • 中国传统色彩名录

    2007-11-29 18:36:00
  • XML轻松学习手册(3)XML的术语

    2008-09-05 17:17:00
  • 设计地址栏透明icon图标方法

    2008-10-25 16:42:00
  • Host localhost is not allowed to conn

    2011-02-23 12:41:00
  • asp之家 网络编程 m.aspxhome.com