KyrieIrvinga 2024-05-13 13:00 采纳率: 58.8%
浏览 2

数据库——事务、存储过程、IF分支


DELIMITER //

CREATE PROCEDURE CheckTotalCredits(IN threshold INT, OUT result INT)
BEGIN
    DECLARE totalCredits INT;
    
    SELECT SUM(score) INTO totalCredits FROM course_info;
    
    IF totalCredits <=threshold THEN
        SET result = 0;
    ELSE
        SET result = 1;
    END IF;
END //

DELIMITER ;

SET @x = 20;

BEGIN;
-- 尝试插入一条记录
CALL INSERT1(7,'概率论',1.5);

-- 检查总学分数是否超过20
CALL CheckTotalCredits(@x,@result);

-- 如果总学分数不超过20,则提交事务
IF @result = 0 THEN
    COMMIT;
    SELECT '插入成功';
ELSE
    -- 如果超过20,则回滚事务
    ROLLBACK;
    SELECT '插入失败,总学分数超过20';
END IF;
END;

上述代码为什么会报1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF @result = 0 THEN
COMMIT' at line 2这个错误。

  • 写回答

3条回答 默认 最新

  • 专家-皆知 2024-05-13 13:00
    关注

    定义存储过程,传入阈值,查询总学分,比较并返回结果。

    以上回复有部分引自免费微信小程序:皆我百晓生。 如问题尚未解决,还请稍待,如有疑问请回复进一步沟通。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月13日