MySQL 函式
Rashmi Patidar
2023年1月30日
本文介紹如何在 MySQL 中使用和建立一個簡單的函式。
MySQL 中的函式
是什麼
在 MySQL 程式語言中,函式
是一組語句,它們執行一組行並返回一個值。
當功能塊被外部呼叫時,這組程式碼執行業務邏輯,而轉換恰好返回 void 或任何單獨的值。
函式有助於在儲存和檢索資料之前處理資料。它有多種型別,如單值或多個引數函式。
我們可以從函式中獲得的好處包括:
- 在不同的地方使用相同的功能進行一些操作。
- 一處改動,處處可見效果。
- 功能易於維護。
- 它允許程式碼共享和所有用途的一致性。
- 減少相同任務的返工和重複使用現有功能。
MySQL 中的函式原型或語法如下。
CREATE FUNCTION function_name [ (parameter datatype [, parameter datatype]) RETURNS return_datatype
BEGIN
Declaration_section
Executable_section
END;
讓我們對上述語法有更多的見解和細節。
- 語法以
CREATE FUNCTION
語句開頭;它在內部表示 MySQL,需要建立一個新方法。 - 在 function 關鍵字之後,
function_name
是特定名稱,表示行塊是所提供語句的別名。當給定函式名時,使用者嘗試執行給定的集合以執行所需的函式。 - 在函式名旁邊,可以有
n
個引數作為引數傳遞給函式。引數列表由變數名和變數資料型別兩部分組成。
3.1。變數名可用於函式操作邏輯。發生轉換的語句集使用引數變數來處理接收到的資料。
3.2 變數名後的資料型別宣告限制使用傳遞定義的引數。資料型別作為主要驗證來驗證傳遞的引數。 RETURNS
關鍵字指定下一個值是函式的單個返回值。Return_datatype
是函式返回值的資料型別。它還包括資料型別的大小,例如VARCHAR(20)
。BEGIN
關鍵字在內部指定關鍵字旁邊的行是執行下一組行的起點。它表明這是功能塊的開始。Declaration_section
是宣告所有變數的功能塊的位置或頂部。Executable_section
是實際程式碼行用於操作的塊。這些行是執行業務轉換邏輯的確切行。END;
是指定塊結束的終端關鍵字。該關鍵字與BEGIN
語句結合使用。該語句說明了塊的開始和結束。
在 MySQL 中使用 CREATE FUNCTION
建立函式
建立函式的先決條件是:
- 有一個正確的 MySQL 連線並保持伺服器正常執行。
- 建立一個資料庫並在需要建立函式的地方使用該資料庫(例如:
myFirstDb
)。 - 預先建立一個可以呼叫函式的表(例如:
stu_name
)。 - 在函式起作用的表中輸入一些條目並做出響應。
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。
作者: Rashmi Patidar
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn