我尝试在其中创建一个带有if语句的存储过程。 我复制了:https://dev.mysql.com/doc/refman/5.7/en/local-variable-scope.html
但是我在END IF上得到了以下错误;靠近'':
DROP PROCEDURE IF EXISTS `myProc`;
CREATE DEFINER=`root`@`%` PROCEDURE `myProc`(
IN in_userId int,
IN in_projectId int
)
BEGIN
DECLARE tmp_courseId int;
DECLARE done TINYINT DEFAULT 0;
DECLARE cursorProjectCourse CURSOR FOR SELECT CourseId FROM XC_PROJECT_COURSE where projectId = in_projectId ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cursorProjectCourse;
read_loop: LOOP
FETCH FROM cursorProjectCourse INTO tmp_courseId;
IF done = 1 THEN LEAVE read_loop;
END IF;
SELECT tmp_courseId, in_userId;
END LOOP;
CLOSE cursorProjectCourse;
END;
有谁知道我犯了哪个错误?
确切的错误消息:
SQL错误[1064] [42000]:您的SQL语法出错;校验 与您的MySQL服务器版本对应的手册 要在''附近使用的语法第19行SQL错误
MySQL版本: 46年5月5日
感谢您的帮助!
答案 0 :(得分:3)
我找到了解决方案。
我必须在第一个语句和最后c.insets = new Insets(5, 10, 5, 10); // top, left, bottom, right padding
DELIMITER $$
DELIMITER ;
将关键字设置在第一个位置非常重要。如果第一个位置上有空白,则会抛出上述错误。
答案 1 :(得分:0)
你在结束循环时错过了循环标签。将其更改为
read_loop: LOOP
FETCH FROM cursorProjectCourse INTO tmp_courseId;
IF done = 1 THEN
LEAVE read_loop;
END IF;
END LOOP read_loop;
SELECT tmp_courseId, in_userId;