HOWTO · MySQL

MySQL 函式

本文介紹如何在 MySQL 中使用和建立一個簡單的函式。

本文介紹如何在 MySQL 中使用和建立一個簡單的函式。

MySQL 中的函式是什麼

在 MySQL 程式語言中,函式是一組語句,它們執行一組行並返回一個值。

當功能塊被外部呼叫時,這組程式碼執行業務邏輯,而轉換恰好返回 void 或任何單獨的值。

函式有助於在儲存和檢索資料之前處理資料。它有多種型別,如單值或多個引數函式。

我們可以從函式中獲得的好處包括:

  1. 在不同的地方使用相同的功能進行一些操作。
  2. 一處改動,處處可見效果。
  3. 功能易於維護。
  4. 它允許程式碼共享和所有用途的一致性。
  5. 減少相同任務的返工和重複使用現有功能。

MySQL 中的函式原型或語法如下。

CREATE FUNCTION function_name [ (parameter datatype [, parameter datatype]) RETURNS return_datatype
BEGIN
Declaration_section
Executable_section
END;

讓我們對上述語法有更多的見解和細節。

  1. 語法以 CREATE FUNCTION 語句開頭;它在內部表示 MySQL,需要建立一個新方法。
  2. 在 function 關鍵字之後,function_name 是特定名稱,表示行塊是所提供語句的別名。當給定函式名時,使用者嘗試執行給定的集合以執行所需的函式。
  3. 在函式名旁邊,可以有 n 個引數作為引數傳遞給函式。引數列表由變數名和變數資料型別兩部分組成。
    3.1。變數名可用於函式操作邏輯。發生轉換的語句集使用引數變數來處理接收到的資料。
    3.2 變數名後的資料型別宣告限制使用傳遞定義的引數。資料型別作為主要驗證來驗證傳遞的引數。
  4. RETURNS 關鍵字指定下一個值是函式的單個返回值。
  5. Return_datatype 是函式返回值的資料型別。它還包括資料型別的大小,例如 VARCHAR(20)
  6. BEGIN 關鍵字在內部指定關鍵字旁邊的行是執行下一組行的起點。它表明這是功能塊的開始。
  7. Declaration_section 是宣告所有變數的功能塊的位置或頂部。
  8. Executable_section 是實際程式碼行用於操作的塊。這些行是執行業務轉換邏輯的確切行。
  9. END; 是指定塊結束的終端關鍵字。該關鍵字與 BEGIN 語句結合使用。該語句說明了塊的開始和結束。

在 MySQL 中使用 CREATE FUNCTION 建立函式

建立函式的先決條件是:

  1. 有一個正確的 MySQL 連線並保持伺服器正常執行。
  2. 建立一個資料庫並在需要建立函式的地方使用該資料庫(例如:myFirstDb)。
  3. 預先建立一個可以呼叫函式的表(例如:stu_name)。
  4. 在函式起作用的表中輸入一些條目並做出響應。
CREATE TABLE `stu` (
  `id` varchar(255) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `dob` date DEFAULT NULL
);
INSERT INTO `myFirstDb`.`stu`(`id`,`name`,`dob`) VALUES ('111','Test',DATE('1970-01-08'));
DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION `get_stu_name`(stu_id VARCHAR(50)) RETURNS varchar(50) CHARSET utf8mb4
BEGIN
declare stu_name varchar(50) ;
select name into stu_name from myFirstDb.stu where id = stu_id;
RETURN stu_name;
END$$
DELIMITER ;

當我們使用帶有 SELECT 關鍵字的函式名時,會發生以下函式呼叫。呼叫語句如下所示。

Select get_stu_name('111');

呼叫語句將引數 1 作為學生 ID 傳遞並執行該函式。要成功執行函式名稱,必須存在一個學生表,其中 id 作為屬性之一。

當記錄存在時,該函式將與學生 ID 對應的學生姓名返回為 1。