文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
手冊頁 (TGZ) - 258.5Kb
手冊頁 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  用於可載入函數的 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 還會將函數新增到 Performance Schema 的 user_defined_functions 表中,該表提供有關已安裝的可載入函數的執行時間資訊。請參閱第 29.12.22.10 節,「user_defined_functions 表」

注意

mysql.func 系統表一樣,Performance Schema 的 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,則伺服器可能會意外關閉。