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
相关产品推荐
相关产品推荐

