“DECLARE 在此位置无效,需要 END”SQL 语法错误

问题描述 投票:0回答:1

我目前正在尝试创建一个程序,根据提供的代码为课程分配新日期。但是,我遇到了这个语法错误,我被告知“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 syntax-error declare
1个回答
0
投票

据我所知,

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 ;

看看会发生什么。

© www.soinside.com 2019 - 2024. All rights reserved.