重载MySQL存储的函数

And*_*eKR 7 mysql sql stored-procedures

当我尝试创建具有相同名称但签名不同的存储函数时:

CREATE FUNCTION `max`(a INT, b INT) RETURNS INT
BEGIN
    IF a > b THEN RETURN a; ELSE RETURN b; END IF;
END

CREATE FUNCTION `max`(a DATE, b DATE) RETURNS DATE
BEGIN
    IF a > b THEN RETURN a; ELSE RETURN b; END IF;
END
Run Code Online (Sandbox Code Playgroud)

MySQL给了我一个错误:

功能max已存在

难道我真的给不同的名称,如函数max_tinyint,max_int,max_date,max_datetime,等?

如果我可以创建一个接受任意类型作为参数的函数,那就更容易了.

zer*_*kms 13

mysql不支持函数重载.因此,唯一的方法是创建具有不同名称的函数

UPD:是的,mysql有GREATEST()函数来做你想做的事