MySQL - 使用者自定義函式的 CREATE FUNCTION 語句



函式是一段組織良好的、可重用的程式碼塊,用於執行單個相關的操作。函式為您的應用程式提供了更好的模組化和高度的程式碼重用性。

MySQL 提供了一套內建函式,用於執行特定任務,例如 CURDATE() 函式返回當前日期。

除了儲存函式外,您還可以使用 CREATE FUNCTION 語句建立和載入使用者自定義函式到 MySQL 伺服器。要執行此函式,您需要 INSERT 許可權。

語法

以下是使用者自定義函式的 CREATE FUNCTION 語句的語法:

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

其中,`function_name` 是您需要建立的函式的名稱,`shared_library_name` 是包含所需使用者自定義函式程式碼的庫檔案的名稱。

示例

假設我們有一個名為 udf.dll 的 UDF 檔案,其中包含一個名為 sample 的函式。以下查詢將 UDF 函式新增到 MySQL:

CREATE FUNCTION sample RETURNS INTEGER soname 'udf.dll';

您可以使用以下查詢驗證 UDF 是否已安裝:

select * from mysql.func where name = 'sys_exec';

輸出

以下是上述 MySQL 查詢的輸出:

名稱 (name) 返回值 (ret) 庫檔案 (dl) 型別 (type)
sample 2 udf.dll 函式 (function)

如果要建立/載入聚合函式,可以指定 AGGREGATE 子句。根據要載入的函式的返回值,您可以指定各種返回值型別,例如 STRING、INTEGER、REAL、DECIMAL。

以下是將使用者自定義函式載入到 MYSQL 的更多查詢:

CREATE FUNCTION metaphon RETURNS STRING SONAME "udf_example.dll";
CREATE FUNCTION myfunc_double RETURNS REAL SONAME "udf_example.dll";
CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "udf_example.dll";
CREATE FUNCTION sequence RETURNS INTEGER SONAME "udf_example.dll";
CREATE AGGREGATE FUNCTION avgcost RETURNS REAL SONAME "udf_example.dll";
廣告