面试题答案
一键面试- 创建MySQL用户自定义函数:
DELIMITER //
CREATE FUNCTION add_numbers(a INT, b INT)
RETURNS INT
DETERMINISTIC
BEGIN
DECLARE result INT;
SET result = a + b;
RETURN result;
END //
DELIMITER ;
- 处理参数类型不匹配错误:
- 在MySQL中,当调用函数时,如果传入的参数类型与函数定义的参数类型不匹配,MySQL会尝试进行隐式类型转换。例如,如果传入一个字符串类型的值,只要该字符串可以被正确转换为整数(如'123'),函数通常能正常工作。
- 但是,如果字符串无法转换为整数(如'abc'),则会出现错误。为了更优雅地处理这种情况,可以在函数内部添加参数检查。例如:
DELIMITER //
CREATE FUNCTION add_numbers(a INT, b INT)
RETURNS INT
DETERMINISTIC
BEGIN
DECLARE result INT;
IF (a REGEXP '^[+-]?[0-9]+$') AND (b REGEXP '^[+-]?[0-9]+$') THEN
SET result = a + b;
ELSE
SET result = NULL; -- 或者返回一个特殊值,比如 -1 表示参数错误
END IF;
RETURN result;
END //
DELIMITER ;
这样,当参数无法转换为整数时,函数会返回NULL
(或自定义的错误标识),而不是抛出一个可能导致程序中断的错误。