MySQL执行CREATE PROCEDURE无响应:无报错无输出问题排查
问题解决:MySQL存储过程创建无响应的原因与修复
你的代码里有两个关键语法错误,导致存储过程创建时无响应或失败:
1. 存储过程定义结束未添加临时分隔符
你设置了DELIMITER |作为临时分隔符,但存储过程的END语句后没有跟上这个分隔符,MySQL无法判断存储过程定义已经结束,会一直等待输入,表现为加载后无任何输出。
2. INSERT语句语法错误
INSERT INTO odd(num) VALUES x;不符合MySQL语法,单值插入时必须将值放在括号内,正确写法是VALUES (x)。
修正后的完整代码
CREATE TABLE odd(num INT PRIMARY KEY); DELIMITER | CREATE PROCEDURE insertOdd() BEGIN DECLARE x INT; SET x = 0; loop_label: LOOP SET x = (2 * x) + 1; IF x > 20 THEN LEAVE loop_label; END IF; IF x = 5 THEN ITERATE loop_label; END IF; IF x = 15 THEN ITERATE loop_label; END IF; INSERT INTO odd(num) VALUES (x); ITERATE loop_label; END LOOP loop_label; END | DELIMITER ;
执行修正后的代码后,就能正常创建存储过程,调用CALL insertOdd();即可向odd表插入预期的奇数(排除5和15)。
内容的提问来源于stack exchange,提问作者Cezlock
相关产品推荐
相关产品推荐

