重载MySQL存储的函数

时间:2012-01-12 03:58:05

标签: 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

MySQL给了我一个错误:

  

FUNCTION max已存在

我是否真的必须为max_tinyintmax_intmax_datemax_datetime等功能提供不同的名称?

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

1 个答案:

答案 0 :(得分:12)

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

UPD :是的,mysql有GREATEST()功能可以做你想做的事情