MySQL限制单个块中的IF语句数量?

时间:2014-02-11 01:57:07

标签: mysql stored-procedures triggers

我遇到了一个奇怪的问题,我正在编写一个触发器或存储过程(尝试过一个,然后尝试另一个,相同的问题)。

我有一个IF语句块,用于检查输入值是否为一组数字,然后相应地更新字段:

的Sanitized:

 IF(INC_Center = "001" OR INC_Center = "1") THEN SET CenterAssigned = "Place1";
 ELSEIF(INC_Center = "002" OR INC_Center = "2") THEN SET CenterAssigned = "Place2";
 ...
 ELSEIF(INC_Center = "101") THEN SET CenterAssigned = "Place45";
 ELSEIF(INC_Center = "101") THEN SET CenterAssigned = "Place46";
 ELSEIF(INC_Center = "103") THEN SET CenterAssigned = "Place47";
 ELSEIF(INC_Center = "104") THEN SET CenterAssigned = "Place48";
 ELSEIF(INC_Center = "110") THEN SET CenterAssigned = "Place49";
 ELSE SET CenterAssigned = "ERROR";
 END IF;

这样做的缺点是必须进行49次检查。当我到达#45时,我从MySQL Workbench(Windows 8上的5.2.45 CE)获得了“解析器堆栈溢出”。我检查了一些其他帖子,看到有人建议检查thread_stack值,我的默认值是192k,所以我把它增加到256k,没有区别。

MySQL代码块上的IF语句数量是否有限制?语法看起来是正确的,当我注释掉过去#45的IF语句时,它们工作正常,包括Else语句。

我可以将它改为Case语句,它只是随着位置数量的增加而扩展的逻辑。但我很好奇这是不是我的问题。

0 个答案:

没有答案