【发布时间】:2022-01-04 13:44:01
【问题描述】:
我正在尝试处理我的第一个书面存储过程中的故障。我的目标是有一个默认设置为零的变量,如果发生任何故障,它将增加到 1。此后,我将检查这个变量是否设置为 1 并输出一个简单的文本。
这是我到目前为止所得到的,但如果我尝试使用 2 个 varchars 而不是 Integer 调用该过程,我不会收到我的消息。
任何提示我做错了什么?
DROP PROCEDURE IF EXISTS changePrice;
DELIMITER $$
CREATE PROCEDURE
changePrice(IN categorie VARCHAR(30), IN factor INT)
BEGIN
DECLARE stat_var INT DEFAULT 0;
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
SET stat_var = 1;
END;
UPDATE
Artikel
SET
Einzelpreis = (Einzelpreis * (factor / 100))
WHERE
Kategorie = categorie;
END;
IF stat_var = 1 THEN
SELECT 'Fehler MOOOOOOOP';
END IF;
END $$
DELIMITER ;
CALL changePrice('Metallwaren', 'a');
【问题讨论】:
-
我希望“不正确的整数值:'a' for column 'factor' at row ..”引用
CALL changePrice('Metallwaren', 'a');行。 -
但是你看到的错误(“ERROR 1366 (HY000): Incorrect integer value: 'a' for column 'factor' at row 1”)被更早地发现了。
标签: mysql sql stored-procedures