文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美國信紙尺寸) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  用於可載入函數的 CREATE FUNCTION 陳述式

15.7.4.1 用於可載入函數的 CREATE FUNCTION 陳述式

CREATE [AGGREGATE] FUNCTION [IF NOT EXISTS] function_name
    RETURNS {STRING|INTEGER|REAL|DECIMAL}
    SONAME shared_library_name

此陳述式載入名為 function_name 的可載入函數。( CREATE FUNCTION 也用於建立儲存函數;請參閱 第 15.1.17 節,「CREATE PROCEDURE 和 CREATE FUNCTION 陳述式」。)

可載入函數是一種擴展 MySQL 的方式,透過新增一個功能,使其像原生(內建)的 MySQL 函數一樣運作,例如 ABS()CONCAT()。請參閱新增可載入函數

function_name 是在 SQL 語句中用於調用函數的名稱。RETURNS 子句表示函數的返回值類型。DECIMALRETURNS 之後的合法值,但目前 DECIMAL 函數會回傳字串值,應如同 STRING 函數一樣撰寫。

如果已存在同名的可載入函數,IF NOT EXISTS 可防止錯誤發生。但如果已存在同名的內建函數,則無法防止錯誤發生。IF NOT EXISTS 也支援 CREATE FUNCTION 語句。請參閱函數名稱解析

若提供 AGGREGATE 關鍵字,則表示該函數為彙總(群組)函數。彙總函數的運作方式與 MySQL 原生的彙總函數完全相同,例如 SUM()COUNT()

shared_library_name 是包含實現函數程式碼的共享程式庫檔案的基本名稱。該檔案必須位於外掛程式目錄中。此目錄由 plugin_dir 系統變數的值指定。如需更多資訊,請參閱第 7.7.1 節,「安裝和解除安裝可載入函數」

CREATE FUNCTION 需要 mysql 系統綱要的 INSERT 權限,因為它會在 mysql.func 系統資料表中新增一列以註冊函數。

CREATE FUNCTION 也會將函數新增至效能綱要的 user_defined_functions 資料表,其中提供關於已安裝可載入函數的執行階段資訊。請參閱第 29.12.22.10 節,「user_defined_functions 資料表」

注意

mysql.func 系統資料表一樣,效能綱要的 user_defined_functions 資料表列出了使用 CREATE FUNCTION 安裝的可載入函數。與 mysql.func 資料表不同的是,user_defined_functions 資料表也列出了由伺服器元件或外掛程式自動安裝的可載入函數。由於此差異,user_defined_functionsmysql.func 更適合用於檢查已安裝哪些可載入函數。

在正常的啟動順序期間,伺服器會載入在 mysql.func 資料表中註冊的函數。如果伺服器以 --skip-grant-tables 選項啟動,則不會載入資料表中註冊的函數,並且這些函數將無法使用。

注意

若要升級與可載入函數相關聯的共享程式庫,請發出 DROP FUNCTION 語句,升級共享程式庫,然後發出 CREATE FUNCTION 語句。如果您先升級共享程式庫,然後使用 DROP FUNCTION,則伺服器可能會意外關閉。