繁体   English   中英

MySQL存储过程,如果语句不起作用

[英]MySQL stored procedure if statement not working

我在MySQL中有以下存储过程

CREATE DEFINER=`test_db`@`%` PROCEDURE `ADD_ATTENDANCE`(IN `programID` INT, IN `clientID` INT, IN `insDate` DATETIME, IN `updDate` DATETIME, IN `insUser` INT, IN `updUser` INT, IN `lessonDate` DATE, IN `lessonTime` TIME)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT 'Add attedance to my calendar'

BEGIN
    DECLARE max_sub, availability INT;
    DECLARE cursor_max_sub CURSOR FOR SELECT max_sub FROM app_lesson WHERE id = programID;
    DECLARE cursor_availability CURSOR FOR SELECT count(*) FROM attendance WHERE program_id = programID AND lesson_date = lessonDate AND lesson_time = lessonTime;
    OPEN cursor_max_sub;
    OPEN cursor_availability;

    read_loop: LOOP
        FETCH cursor_max_sub INTO max_sub;
        FETCH cursor_availability INTO availability;
        IF (availability < max_sub) THEN
            insert into attendance (program_id, client_id, ins_date, upd_date, ins_user, upd_user, lesson_date, lesson_time) 
            values (programID, clientID, insDate, updDate, insUser, updUser, lessonDate, lessonTime);
            LEAVE read_loop;
        ELSE
            insert into attendance_hold (program_id, client_id, ins_date, upd_date, ins_user, upd_user, lesson_date, lesson_time) 
            values (programID, clientID, insDate, updDate, insUser, updUser, lessonDate, lessonTime);
        END IF;
    END LOOP;
    CLOSE cursor_max_sub;
    CLOSE cursor_availability;
END;

即使cursor_max_sub等于6并且cursor_availability等于4,我的过程也始终执行else insert语句。 你能帮我吗?

谢谢!!!

好的,这很棘手。由于某些原因,当我将max_sub变量更改为maxNumberOfSubscription一切都正常运行了… max_submax_sub某种保留关键字,还是复杂化,因为我的变量与返回的字段具有相同的名称选择语句?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM