MySQL - BEGIN ... END 複合語句



BEGIN ... END 複合語句

BEGIN ... END 語法用於建立複合語句。這些複合語句包含多組語句。這些語句以 BEGIN 開頭,以 END 語句結尾。複合語句中的每個語句都以分號 (;) 或當前語句分隔符結尾。

儲存過程和函式、觸發器和事件是 MySQL 中的複合語句。您可以在另一個 BEGIN ... END 塊中編寫 BEGIN ... END 塊,我們還可以標記這些語句。

複合語句可以包含其他塊,例如變數宣告、條件、遊標,包括迴圈和條件測試。

語法

以下是 BEGIN ... END 複合語句的語法:

[begin_label:] BEGIN
   [statement_list]
END [end_label]

示例 1

假設我們在 MySQL 資料庫中使用 CREATE TABLE 建立了一個名為 Employee 的表,如下所示:

CREATE TABLE Employee(
   Name VARCHAR(255), 
   Salary INT NOT NULL, 
   Location VARCHAR(255)
);

以下是一個 MySQL 儲存過程的示例。在這裡,我們正在將一列插入到 Employee 表中,並從使用者處獲取值。(透過輸入引數)

DELIMITER //
Create procedure myProcedure (
   IN name VARCHAR(30),
   IN sal INT,
   IN loc VARCHAR(45))
   BEGIN
      INSERT INTO Employee(Name, Salary, Location) VALUES (name, sal, loc);
   END // 
DELIMITER ;

呼叫儲存過程

以下語句呼叫上面建立的儲存過程。

CALL myProcedure ('Raman', 35000, 'Bangalore');

如果您檢索表的內容,您可以觀察到新插入的行,如下所示:

select * from employee;

輸出

上述查詢產生以下輸出:

姓名 工資 地點
Raman 35000 Bangalore

示例 2

假設我們在資料庫中使用 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 ;

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

SELECT getDob('Amit');

輸出

以下是上述程式的輸出:

getDob('Amit')
1970-01-08
廣告

© . All rights reserved.