MYSQL函数在创建后立即抛出自定义错误消息

时间:2017-06-25 10:47:00

标签: mysql function signals

希望你们能提供帮助。

如果输入(INT)不等于长度8,我试图在函数内部抛出错误消息。

我的代码:

DELIMITER $$
CREATE FUNCTION test(a INT)
RETURNS INT
BEGIN
    DECLARE ret INT;
    IF LENGTH(CONVERT(a, CHAR)) != 8 THEN SIGNAL SQLSTATE '4500' SET MESSAGE_TEXT = 'need to be 8!';
    END IF;
    IF a <= 20000000 THEN SET ret = 1;
    ELSEIF a > 20000000 AND a <= 30000000 THEN SET ret = 2;
    ELSE SET ret = 3;
    END IF;
    RETURN ret;
END;
$$
DELIMITER ;

不幸的是,当我创建函数时,它会立即抛出错误消息并且不会等待条件。 因此,当我尝试运行代码时,它说:

Error Code: 1407. Bad SQLSTATE: '4500'

我该如何解决?

1 个答案:

答案 0 :(得分:2)

DELIMITER $$
CREATE FUNCTION test(a INT)
RETURNS INT
BEGIN
    DECLARE ret INT;
    IF LENGTH(CONVERT(a, CHAR)) != 8 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'need to be 8!';   #--I had made changes at this line#
    END IF;
    IF a <= 20000000 THEN SET ret = 1;
    ELSEIF a > 20000000 AND a <= 30000000 THEN SET ret = 2;
    ELSE SET ret = 3;
    END IF;
    RETURN ret;
END;
$$
DELIMITER ;

尝试以上代码。 SQLSTATE没有4500。您可以尝试4500 45000

而不是SQLSTATE

希望这会对你有所帮助。