BEGIN尝试的错误代码1064

时间:2017-04-14 18:06:09

标签: mysql mysql-error-1064

我需要有人帮忙试图找出为什么这个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 ;

1 个答案:

答案 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 ;