Mysql

如何委託給另一個函式?

  • August 15, 2022

我想創建一個委託給另一個函式的函式,之前添加一些邏輯。

首先,我嘗試創建一個簡單地重定向到ADDDATEmysql 函式的函式:

CREATE FUNCTION IF NOT EXISTS custom_function(thedate DATE, days INTEGER) RETURNS DATE
   DETERMINISTIC
BEGIN
   return (select ADDDATE(thedate, days));
END

結果:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to 
       your MySQL server version for the right syntax to use near '' at line 4

這裡有什麼問題?錯誤消息並沒有真正的幫助……

select不是FUNCTION編寫. 如果函式可以簡單地表示,則 and 是可選BEGIN的。END``RETURN <<expression>>

至少在使用命令行“mysql”程序時需要“定界符”的東西。如果您使用的是其他一些 UI,它的使用可能會有所不同。

創建函式:

DELIMITER //
CREATE FUNCTION IF NOT EXISTS custom_function(thedate DATE, days INTEGER) RETURNS DATE
   DETERMINISTIC
   RETURN ADDDATE(thedate, days);
//
DELIMITER ;

使用範例:

SELECT custom_function(CURDATE(), 5);

結果:

+-------------------------------+
| custom_function(CURDATE(), 5) |
+-------------------------------+
| 2022-08-20                    |
+-------------------------------+

引用自:https://dba.stackexchange.com/questions/315637