MySQL - 刪除函式語句



MySQL 刪除函式語句

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

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

您可以使用 DROP FUNCTION 語句刪除函式。

語法

以下是刪除函式語句的語法:

DROP FUNCTION function_name

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

示例

假設我們使用以下 CREATE 語句建立了一個名為 Emp 的表:

CREATE TABLE Emp(
   Name VARCHAR(255), 
   DOB DATE, 
   Location VARCHAR(255)
);

現在,讓我們向 Emp 表中插入一些記錄:

INSERT INTO Emp VALUES 
('Amit', DATE('1970-01-08'), 'Hyderabad'),
('Sumith', DATE('1990-11-02'), 'Vishakhapatnam'),
('Sudha', DATE('1980-11-06'), 'Vijayawada');

讓我們建立一個 getDob() 函式,它接受員工的姓名,檢索並返回 DOB 列的值。

DELIMITER //
CREATE FUNCTION test.getDob(emp_name VARCHAR(50))
   RETURNS DATE
   DETERMINISTIC
   BEGIN
      declare dateOfBirth DATE;
      select DOB into dateOfBirth from test.emp where Name = emp_name;
      return dateOfBirth;
   END//
DELIMITER ;

同樣,如果我們建立了另一個表,如下所示:

CREATE TABLE student (
   Name VARCHAR(100), 
   Math INT, 
   English INT, 
   Science INT, 
   History INT
);

現在讓我們向學生表中插入四條記錄:

INSERT INTO student values
('Raman', 95, 89, 85, 81),
('Rahul' , 90, 87, 86, 81),
('Mohit', 90, 85, 86, 81),
('Saurabh', NULL, NULL, NULL, NULL );

以下函式更新了上面建立的表:

DELIMITER //
Create Function test.tbl_Update(S_name Varchar(50), 
   M1 INT, M2 INT, M3 INT, M4 INT)
   RETURNS INT
   DETERMINISTIC
   BEGIN
   UPDATE student SET Math = M1, English = M2, 
   Science = M3, History = M4 WHERE Name = S_name;
   RETURN 1;
   END //
DELIMITER ;

您可以使用 SHOW FUNCTION STATUS 語句驗證資料庫中的函式列表,如下所示:

SHOW FUNCTION STATUS WHERE db = 'test'\G;

輸出

上述查詢產生以下輸出:

************ 1. row ************
                  Db: test
                Name: getDob
                Type: FUNCTION
             Definer: root@localhost
            Modified: 2023-12-05 15:03:56
             Created: 2023-12-05 15:03:56
       Security_type: DEFINER
             Comment:
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci
************ 2. row ************
                  Db: test
                Name: tbl_Update
                Type: FUNCTION
             Definer: root@localhost
            Modified: 2023-12-05 15:06:48
             Created: 2023-12-05 15:06:48
       Security_type: DEFINER
             Comment:
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: utf8mb4_0900_ai_ci

以下查詢刪除/丟棄上面建立的函式:

DROP FUNCTION getDob;

DROP FUNCTION tbl_update;

驗證

由於我們已經刪除了這兩個函式。如果您再次驗證函式列表,您將得到一個空集:

SHOW FUNCTION STATUS WHERE db = 'test';
Empty set (0.00 sec)

IF EXISTS 子句

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

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

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

DROP FUNCTION IF EXISTS demo;
廣告