CREATE FUNCTION <函數名> ( [ <引數1> <型別1> [ , <引數2> <型別2>] ] … )
RETURNS <型別>
<函數主體>
<函數名>
:指定自定義函數的名稱。注意,自定義函數不能與儲存過程具有相同的名稱。<引數><型別>
:用於指定自定義函數的引數。這裡的引數只有名稱和型別,不能指定關鍵字 IN、OUT 和 INOUT。RETURNS<型別>
:用於宣告自定義函數返回值的資料型別。其中,<型別>
用於指定返回值的資料型別。<函數主體>
:自定義函數的主體部分,也稱函數體。所有在儲存過程中使用的 SQL 語句在自定義函數中同樣適用,包括前面所介紹的區域性變數、SET 語句、流程控制語句、游標等。除此之外,自定義函數體還必須包含一個 RETURN<值>
語句,其中<值>
用於指定自定義函數的返回值。<函數名>
用於指定該自定義函數的名稱。mysql> CREATE FUNCTION StuNameById() -> RETURNS VARCHAR(45) -> RETURN -> (SELECT name FROM tb_students_info -> WHERE id=1); Query OK, 0 rows affected (0.09 sec)
成功建立自定義函數後,就可以如同呼叫系統內建函數一樣,使用關鍵字 SELECT 呼叫使用者自定義的函數,語法格式為:注意:當使用 DELIMITER 命令時,應該避免使用反斜槓“”字元,因為反斜槓是 MySQL 的跳脫字元。
SELECT <自定義函數名> ([<引數> [,...]])
【範例 2】呼叫自定義函數 StuNameById,檢視函數的執行結果,如下所示。mysql> SELECT StuNameById(); +---------------+ | StuNameById() | +---------------+ | Dany | +---------------+ 1 row in set (0.24 sec)
DROP FUNCTION [ IF EXISTS ] <自定義函數名>
語法說明如下。<自定義函數名>
:指定要刪除的自定義函數的名稱。IF EXISTS
:指定關鍵字,用於防止因誤刪除不存在的自定義函數而引發錯誤。mysql> DROP FUNCTION StuNameById; Query OK, 0 rows affected (0.09 sec) mysql> SELECT StuNameById(); ERROR 1305 (42000): FUNCTION test_db.StuNameById does not exist