2012-01-12 40 views
5

當我嘗試用相同的名字,但不同的簽名創建存儲功能:重載MySQL存儲功能

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_tinyint,max_int,max_date,max_datetime等功能。

更容易的是,如果我可以創建一個接受任意類型作爲參數的函數。

+0

令人感到諷刺的答案會是什麼,MySQL的已經擁有了MAX功能。 ... – 2012-01-12 04:09:40

+0

它終於做到了!?從何時起? (你不是指聚合函數,是嗎?這是一個完全不同的東西。) – AndreKR 2012-01-12 04:21:39

+0

嗯,我的意思是聚合函數,但它確實有一個最大的功能 – 2012-01-12 04:44:27

回答

12

mysql不支持函數重載。所以你唯一的辦法就是用不同的名字

UPD創建函數:,是的,MySQL已經GREATEST()功能做你想做

+0

OMG,我一直在使用MySQL多年。這怎麼會讓我想起這麼久?謝謝你,謝謝你,謝謝你。 – AndreKR 2012-01-12 14:31:41