MySQL - 建立函式語句



MySQL 建立函式語句

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

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

您可以使用 CREATE FUNCTION 語句建立儲存函式。

語法

以下是 CREATE FUNCTION 語句的語法:

CREATE FUNCTION function_Name(input_arguments) RETURNS output_parameter

其中,function_name 是您需要建立的函式的名稱,input_arguments 是函式的輸入值,output_parameter 是函式的返回值。

示例 1

假設我們使用 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; MySQL CREATE FUNCTION Statement
         return dateOfBirth;
   END//
DELIMITER ;

如果呼叫該函式,您可以獲取員工的出生日期,如下所示:

SELECT getDob('Amit');

輸出

以上查詢產生以下輸出:

getDob('Amit')
1970-01-08

示例 2

假設我們建立了另一個表,如下所示:

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

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

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

以下查詢建立一個名為 tbl_Update 的函式:

DELIMITER //
Create Function 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 ;

您可以呼叫上面建立的函式,如下所示:

Select tbl_update('Saurabh',85,69,75,82);

輸出

以下是上述查詢的輸出:

tbl_update('Saurabh',85,69,75,82)
1

如果使用 select 語句獲取 student 表的記錄,您可以觀察到修改後的記錄:

SELECT * from student;

輸出

以上 mysql 查詢產生以下輸出:

姓名 數學 英語 科學 歷史
Raman 95 89 85 81
Rahul 90 87 86 81
Mohit 90 85 86 81
Saurabh 85 69 75 82
廣告