我目前正在尝试创建一个程序,根据提供的代码为课程分配新日期。但是,我遇到了这个语法错误,我被告知“DECLARE”在此位置无效,期望在进行游标声明的行上出现“END”。
DELIMITER $$
CREATE PROCEDURE course_schedulings(IN input_course_code CHAR(3), IN scheduling_date DATE)
BEGIN
DECLARE session_code CHAR(3);
SET session_code = (SELECT `code` FROM module WHERE module.course_code = input_course_code);
DECLARE scheduling_cursor CURSOR FOR
SELECT `date` FROM `session` WHERE `code` = input_course_code;
DECLARE complete BOOLEAN DEFAULT FALSE;
END $$
DELIMITER ;
我真的很困惑我需要在这里解决什么问题。 我认为这与我的光标或分隔符有关?我也知道整个过程中使用的逻辑是错误的,但我不知道这会如何导致语法错误。
我尝试过使用分隔符,但效果不佳。
据我所知,
DECLARE
位置无效。尝试使用 DECLARE xxxy ...
、DECLARE xxxyz CURSOR ...
然后 SET xxxy
。像这样的东西:
DELIMITER $$
CREATE PROCEDURE course_schedulings(IN input_course_code CHAR(3), IN scheduling_date DATE)
BEGIN
DECLARE session_code CHAR(3);
DECLARE complete BOOLEAN DEFAULT FALSE;
DECLARE scheduling_cursor CURSOR FOR
SELECT `date` FROM `session` WHERE `code` = input_course_code;
SET session_code = (SELECT `code` FROM module WHERE module.course_code = input_course_code);
END $$
DELIMITER ;
看看会发生什么。