这几天写了一个存储过程通过父级id循环来处理机构区划字段
在执行存储过程中,我发现只有几百条数据却执行几十秒都没结束,最后逐步排查发现。
有一个机构有父级id但是父级id查询数据为空,然后WHILE就陷入死循环无法退出
加上日志排查为啥会这样,发现:
MySQL在SELECT没有查找到记录,影响行数为0,不会执行INTO的操作,导致变量里面保存的是前一次会话中的结果,导致 IF parentOrgId IS NULL 判断失效 导致陷入死循环
后续在SELECT … INTO … 语句前赋值变量为空,测试后解决该问题
搜索文章后有人说SQL Service则不会有这种问题,以前公司用的Oracle换成MySQL,数据之间的差异还是造成了挺多的问题