CREATE PROCEDURE createChildLst (IN rootId INT,IN nDepth INT)
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE b INT;
DECLARE cur1 CURSOR FOR SELECT id FROM treeNodes where pid=rootId;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
insert into tmpLst values (null,rootId,nDepth);
OPEN cur1;
FETCH cur1 INTO b;
WHILE done=0 DO
CALL createChildLst(b,nDepth+1);
FETCH cur1 INTO b;
END WHILE;
CLOSE cur1;
END;我想让ndepth 大于十 后面记录就不查不来,也就是说深度我只查到10后面就不差了。 我用了 loop 死了2次机 好像是卡死机的。帮我解决下,thk
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE b INT;
DECLARE cur1 CURSOR FOR SELECT id FROM treeNodes where pid=rootId;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
insert into tmpLst values (null,rootId,nDepth);
OPEN cur1;
FETCH cur1 INTO b;
WHILE done=0 DO
CALL createChildLst(b,nDepth+1);
FETCH cur1 INTO b;
END WHILE;
CLOSE cur1;
END;我想让ndepth 大于十 后面记录就不查不来,也就是说深度我只查到10后面就不差了。 我用了 loop 死了2次机 好像是卡死机的。帮我解决下,thk
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE b INT;
DECLARE cur1 CURSOR FOR SELECT id FROM treeNodes where pid=rootId;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; insert into tmpLst values (null,rootId,nDepth); if nDepth<10 then
OPEN cur1;
FETCH cur1 INTO b;
WHILE done=0 DO
CALL createChildLst(b,nDepth+1);
FETCH cur1 INTO b;
END WHILE;
CLOSE cur1;
end if END;
call showChildLst(3);
他都报这个错 我set max_sp_recursion_depth=225; 就可以了
我都设了好几次了 每次都要这样吗?
Recursive limit 0 (as set by the max_sp_recursion_depth variable) was exceeded for routine createChildLst
是!
或者直接在MYSQL的参数文件中定义,这样就不用每次写了。
可是购买的空间 不能给你设置mysql 参数啊