希望你们能提供帮助。
如果输入(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'
我该如何解决?
答案 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
希望这会对你有所帮助。