【问题标题】:Overloading MySQL stored functions重载 MySQL 存储函数
【发布时间】:2012-02-08 10:31:42
【问题描述】:

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

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 等函数命名吗?

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

【问题讨论】:

  • 尖刻的回答是 MySQL 已经有一个 MAX 函数......
  • 终于成功了!?从何时起? (你不是指聚合函数,对吗?那是完全不同的事情。)
  • 嗯,我说的是聚合函数,但它确实有一个最大的函数
  • @AndreKR:它总是有GREATEST()/LEAST() ;-)

标签: mysql sql stored-procedures


【解决方案1】:

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

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

【讨论】:

  • 天啊,我已经使用 MySQL 多年了。这怎么可能让我这么久回避?谢谢,谢谢,谢谢。
猜你喜欢
  • 1970-01-01
  • 2020-10-30
  • 1970-01-01
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多