自定義函數(shù)
自定義函數(shù)的兩個(gè)必要條件
- 參數(shù)
- 返回值
創(chuàng)建自定義函數(shù)
CREATE FUNCTION function_name
RETURNS
{STRING|INTEGER|REAL|DECIMAL}
routine_body
函數(shù)體
函數(shù)
例子
SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H點(diǎn):%i分:%s秒')
-- 將上述句子封裝成函數(shù)
CREATE FUNCTION f1() RETURNS VARCHAR(30)
RETURN DATE_FORMAT(NOW(), '%Y年%m月%d日 %H點(diǎn):%i分:%s秒');
-- 調(diào)用函數(shù)
SELECT f1();
帶有參數(shù)的自定義函數(shù)
-- 帶有參數(shù)的函數(shù)
CREATE FUNCTION f2(num1 SMALLINT UNSIGNED, num2 SMALLINT UNSIGNED)
RETURNS FLOAT(10,2) UNSIGNED
RETURN (num1+num2)/2;
-- 調(diào)用函數(shù)
SELECT f2(1,2);
刪除函數(shù)
DROP FUNCTION f2;
復(fù)合結(jié)構(gòu)體的函數(shù)
-- 將語(yǔ)句結(jié)束符改為$$,為了防止下面的函數(shù)將;看成是語(yǔ)句的結(jié)束
DELIMITER $$
CREATE FUNCTION adduser(username VARCHAR(20))
RETURNS INT UNSIGNED
RETURN
BEGIN
INSERT INTO table_1(username) VALUES(username);
LAST_INSERT_ID();
END;
-- 將分隔符改回來(lái)
DELIMITER ;