我需要有人帮忙试图找出为什么这个BEGIN TRY给我一个错误?
use my_guitar_shop;
DROP PROCEDURE IF EXISTS update_product_discount;
DELIMITER $$
CREATE PROCEDURE update_product_discount
(
IN product_id INT,
IN discount_percent INT
)
BEGIN
BEGIN TRY
UPDATE products
SET discount_percent = discount_percent
WHERE product_id = product_id
END TRY;
END;
BEGIN CATCH
IF discount_percent < 0 THEN
SELECT 'The discount percent must be positive' AS message
END CATCH;
END $$
DELIMITER ;
答案 0 :(得分:0)
您应该在尝试更新之前测试discount_percent。除非更新有问题,否则它不会失败并看到捕获。
另外,不要将变量的名称用作列名。
use my_guitar_shop;
DROP PROCEDURE IF EXISTS update_product_discount;
DELIMITER $$
CREATE PROCEDURE update_product_discount
(
IN this_product_id INT,
IN new_discount_percent INT
)
BEGIN
IF discount_percent < 0 THEN
BEGIN
SELECT 'The discount percent must be positive' AS message;
END
ELSE
BEGIN
BEGIN TRY
UPDATE products
SET discount_percent = new_discount_percent
WHERE product_id = this_product_id;
END TRY
BEGIN CATCH
SELECT 'An error occured while saving.' AS message;
END CATCH
END
END
END
$$
DELIMITER ;