GBASE 8A v953报错集锦13-存储过程递归调用及 max_sp_recursion_depth 参数配置

问题现象
存储过程递归调用及 max_sp_recursion_depth 参数配置。
处理方法
存储过程递归调用的时候会引起报错。
示例
drop procedure if exists pro_test_1;
delimiter |
create procedure pro_test_1(lvl int)
begin
select '1';
set lvl=lvl-1;
if lvl>=0 then
call pro_test_1(lvl);
end if;
end |
delimiter ;
call pro_test_1(2017);
会产生以下报错信息:
错误: {STATEMENT: call pro_test_1(2017)
INSTRUCTION: call pro_test_1(lvl) [4]}
Recursive limit 0 (as set by the max_sp_recursion_depth variable) was exceeded for
routine pro_test_1
从字面意思上来看,是超过递归调用的最大深度,可以通过设置集群层的
max_sp_recursion_depth 参数解决该问题。
处理方法
set max_sp_recursion_depth =3000;
call pro_test_1(2017);
执行成功。
说明
max_sp_recursion_depth 参数范围是 [0~255] ,该值设置超出 255 后会报错;
当递归层数参数 max_sp_recursion_depth 设置为 255 的情况下,需要相应的调大
gcluster 层的 thread_stack 参数(测试环境调整为 2M ),然后重启 gclusterd ;否则可
能会栈溢出从而引起 gclusterd 的宕机。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值