Перегрузка хранимых функций MySQL - PullRequest
6 голосов
/ 12 января 2012

Когда я пытаюсь создать хранимые функции с одинаковыми именами, но разными сигнатурами:

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_tinyint, max_int, max_date, max_datetime и т. Д.

Еще проще было бы, если бы я мог создать функцию, которая принимает произвольные типы в качестве параметров.

1 Ответ

12 голосов
/ 12 января 2012

mysql не поддерживает перегрузку функций.Таким образом, единственный способ для вас - создать функции с разными именами

UPD : и, да, mysql имеет функцию GREATEST () , которая делает то, что вы хотите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...