You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL存储过程校验输入价格超1000时终止并返回错误的实现方法

存储过程修改实现方案

你只需要在原有存储过程的开头添加参数校验逻辑,使用MySQL内置的SIGNAL语句抛出自定义错误即可,修改后的完整存储过程代码如下:

DELIMITER //
DROP PROCEDURE IF EXISTS price_short_of_thousand_after_update; //
CREATE PROCEDURE price_short_of_thousand_after_update(
    IN my_ISBN INT,
    INOUT my_price INT
)
BEGIN
    DECLARE price_temp INT;
    -- 新增参数校验逻辑
    IF my_price > 1000 THEN
        SIGNAL SQLSTATE '45000' 
        SET MESSAGE_TEXT = 'Invalid entry, price cannot be greater than 1000';
    END IF;

    UPDATE book
        SET price = my_price
        WHERE ISBN = my_ISBN;
    
    SELECT price FROM book
        WHERE ISBN = my_ISBN
        INTO price_temp;
        
    SET my_price = 1000 - price_temp;
END //
DELIMITER ;

效果验证

  • 当传入的价格参数大于1000时,存储过程会直接抛出你指定的错误提示,不会执行后续的更新操作,原有图书数据不会被修改
  • 当传入的价格参数小于等于1000时,存储过程逻辑和原有逻辑完全一致,正常更新价格并返回与1000的差值

内容的提问来源于stack exchange,提问作者Payel Senapati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 11:57:01