mysql - 重载 MySQL 存储函数

标签 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 already exists

我真的必须为函数指定不同的名称吗,例如 max_tinyintmax_intmax_datemax_datetime等等?

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

最佳答案

mysql 不支持函数重载。所以你唯一的方法就是创建具有不同名称的函数

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

关于mysql - 重载 MySQL 存储函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8829940/

相关文章:

php - 在 PHP 和 MySQL 中编写 SelectWhere 语句

php - 为托管商中的 foreach php pdo 提供的参数无效

php - 删除行不返回原始数字

sql - 尝试 LEFT JOIN 表时数量加倍

sql - 如何动态决定在 SQL Server 存储过程中加入哪些表

php - 如何在单独的页面上显示每个(只有一个)搜索结果 mysql php

php - 如何从不同的表中选择相关数据并用它来显示mysql和php中的趋势?

mysql - sql查询性能不佳

sql - 将两列数据合并为一列,留下空值

sql - 在存储过程中,是简单地查询数据还是构造一个查询然后执行它更好?为什么?