MySQL如何创建生成数字区间的存储过程及解决DELIMITER语法报错
解决方案
报错的核心原因是代码最后一行重置分隔符的语句语法错误:DELIMITER 关键字和要设置的目标分隔符;之间缺少空格,MySQL无法识别DELIMITER;这个指令。
修正后的完整代码
CREATE TABLE Numbers (n INT); DELIMITER // CREATE PROCEDURE GenerateNumbers(IN L INT, IN H INT) BEGIN -- 如果入参L可能为负数,建议去掉UNSIGNED避免整数范围不匹配报错 DECLARE I INT DEFAULT L; WHILE I <= H DO INSERT INTO Numbers(n) VALUES(I); SET I = I + 1; END WHILE; END // DELIMITER ;
补充说明
- 执行存储过程的方法:调用
CALL GenerateNumbers(起始值, 结束值);即可生成对应区间的数字存入Numbers表,例如CALL GenerateNumbers(1,100);会生成1到100的整数 - 如果需要重复调用存储过程,建议在存储过程的WHILE循环前添加
TRUNCATE TABLE Numbers;语句,避免旧数据重复残留
内容的提问来源于stack exchange,提问作者Abdullah Bahi
相关产品推荐
相关产品推荐

