“DECLARE 在此位置无效,期望 END”SQL 语法错误 [重复]

"DECLARE is not valid at this position, expecting END" SQL syntax error [duplicate]

提问人:root_10 提问时间:10/27/2023 最后编辑:root_10 更新时间:10/27/2023 访问量:32

问:

我目前正在尝试创建一个程序,该过程将根据提供的代码为课程分配新的日期。但是,我有这个语法错误,我被告知“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 ;

我对我需要在这里解决的问题感到非常困惑。 我认为它与我的光标或分隔符有关?我也知道整个过程中使用的逻辑是错误的,但我不明白这会导致语法错误。

我试过使用分隔符,但收效甚微。

mysql stored-procedures 语法错误 声明

评论


答:

0赞 FanoFN 10/27/2023 #1

据我所知,该职位无效。尝试使用 ,然后 。像这样的东西:DECLAREDECLARE 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 ;

看看会发生什么。