gpt4 book ai didi

mysql - SQL 存储过程 : If statement not behaving as expected

转载 作者:行者123 更新时间:2023-11-29 05:52:07 25 4
gpt4 key购买 nike

正在尝试为 MySQL 创建存储过程。它包含一个基本的 if 语句。当前脚本如下:

DROP PROCEDURE IF EXISTS sp_pay_raise;

DELIMITER @@
CREATE PROCEDURE sp_pay_raise
(IN inEmpId INT,
IN inPercentageRaise DOUBLE(4,2),
OUT outErrorCode INT)
BEGIN
IF (@inPercentageRaise <= 0.0) THEN
SELECT -3 INTO errorCode
ELSE
SELECT -2 INTO errorCode
END IF;
END @@
DELIMITER ;

以上没有按预期工作。例如,如果我提供小于零的 inPercentageRaise

CALL sp_pay_raise(0,-1.0, @out)
SELECT @out;

数据库显示@out = -2。 if语句写错了吗?

最佳答案

@ 用于 Session variables .在存储过程中,您不需要使用 @ 作为输入参数。否则,MySQL 将寻找名称相似的预定义 Session 变量。因为它没有找到它;它假定其值为 Null

还有其他错误。你打错了;而不是使用 outErrorCode 参数,您正在使用不同的 undefined variable errorCode

DROP PROCEDURE IF EXISTS sp_pay_raise;

DELIMITER @@
CREATE PROCEDURE sp_pay_raise
(IN inEmpId INT,
IN inPercentageRaise DOUBLE(4,2),
OUT outErrorCode INT)
BEGIN
IF (inPercentageRaise <= 0.0) THEN -- Remove @ from here.
SELECT -3 INTO outErrorCode -- It should be outErrorCode instead of errorCode
ELSE
SELECT -2 INTO outErrorCode -- It should be outErrorCode instead of errorCode
END IF;
END @@
DELIMITER ;

关于mysql - SQL 存储过程 : If statement not behaving as expected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53050805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com