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



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

MySQL 提供了一組內建函式,這些函式執行特定的任務,例如 CURDATE() 函式返回當前日期。除了儲存函式之外,您還可以使用 CREATE FUNCTION 語句建立載入使用者定義的函式。

MySQL DROP FUNCTION 語句

MySQL DROP FUNCTION 語句用於刪除/刪除新增到伺服器的此類使用者定義(可載入)函式。要執行此函式,您需要 DELETE 許可權。

語法

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

DROP FUNCTION [IF EXISTS] function_name

其中,function_name 是您需要刪除的可載入函式的名稱。

示例

假設我們有一個名為 udf.dll 的 UDF 檔案,其中包含一個函式 sample,並且我們已使用 CREATE FUNCTION 語句將其載入到 MYSQL 中,如下所示:

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

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

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

輸出

以下是上述查詢的輸出:

名稱 返回型別 型別
sys_exec 2 udf.dll 函式

以下查詢使用 DROP FUNCTION 語句刪除上面建立的函式:

DROP FUNCTION sample;

由於我們已刪除建立的函式,如果您再次執行上述 SELECT 查詢,您將得到一個空集。

select * from mysql.func where name = 'sample';
Empty set (0.06 sec)

示例

讓我們將使用者定義的函式建立/載入到 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";

以下查詢集刪除所有上述函式:

DROP FUNCTION metaphon;
DROP FUNCTION myfunc_double;
DROP FUNCTION myfunc_int;
DROP FUNCTION sequence;
DROP FUNCTION avgcost;

如果您嘗試刪除不存在的函式,則會生成錯誤,如下所示:

DROP FUNCTION demo;
ERROR 1305 (42000): FUNCTION test.demo does not exist

如果您在 DROP FUNCTION 語句中使用 **IF EXISTS** 子句,如下所示,則將刪除指定的函式,如果不存在具有給定名稱的函式,則該查詢將被忽略。

DROP FUNCTION IF EXISTS demo;
廣告