MySQL儲存過程入門

2019-10-16 22:56:15

在本教學中,我們將逐步介紹如何使用CREATE PROCEDURE語句開發第一個MySQL儲存過程。 另外,我們將向您展示如何從SQL語句呼叫儲存過程。

編寫第一個MySQL儲存過程

我們將開發一個名為GetAllProducts()的簡單儲存過程來幫助您熟悉建立儲存過程的語法。 GetAllProducts()儲存過程從products表中選擇所有產品。

啟動 mysql 用戶端工具並鍵入以下命令:

DELIMITER //
 CREATE PROCEDURE GetAllProducts()
   BEGIN
   SELECT *  FROM products;
   END //
DELIMITER ;

讓我們來詳細地說明上述儲存過程:

  • 第一個命令是DELIMITER //,它與儲存過程語法無關。 DELIMITER語句將標準分隔符 - 分號(;)更改為://。 在這種情況下,分隔符從分號(;)更改為雙斜槓//。為什麼我們必須更改分隔符? 因為我們想將儲存過程作為整體傳遞給伺服器,而不是讓mysql工具一次解釋每個語句。 在END關鍵字之後,使用分隔符//來指示儲存過程的結束。 最後一個命令(DELIMITER;)將分隔符更改回分號(;)。

  • 使用CREATE PROCEDURE語句建立一個新的儲存過程。在CREATE PROCEDURE語句之後指定儲存過程的名稱。在這個範例中,儲存過程的名稱為:GetAllProducts,並把括號放在儲存過程的名字之後。

  • BEGINEND之間的部分稱為儲存過程的主體。將宣告性SQL語句放在主體中以處理業務邏輯。 在這個儲存過程中,我們使用一個簡單的SELECT語句來查詢products表中的資料。

在mysql用戶端工具中編寫儲存過程非常繁瑣,特別是當儲存過程複雜時。 大多數用於MySQL的GUI工具允許您通過直觀的介面建立新的儲存過程。

例如,在MySQL Workbench中,您可以如下建立一個新的儲存過程:

首先,右鍵單擊Stored Procedures…並選擇「Create Stored Procedure…」選單項。

接下來,編寫儲存過程程式碼,然後單擊Apply按鈕

CREATE PROCEDURE `yiibaidb`.`GetAllProducts`()
BEGIN
    SELECT * FROM yiibaidb.products;
END

然後,您可以在MySQL將其儲存在資料庫中之前檢視程式碼。如果一切都沒有問題,點選Apply按鈕。如下所示 -

之後,MySQL將儲存過程編譯並放入資料庫目錄中; 單擊Fished按鈕完成。

最後,可以在yiibaidb資料庫的例程下看到上面所建立的新儲存過程。如下圖所示 -

到此,我們已經成功地建立了一個儲存過程。下面我們將學習如何使用它。

呼叫儲存過程

要呼叫儲存過程,可以使用以下SQL命令:

CALL STORED_PROCEDURE_NAME();

使用CALL語句呼叫儲存過程,例如呼叫GetAllProducts()儲存過程,則使用以下語句:

CALL GetAllProducts();

如果您執行上述語句,將查詢獲得products表中的所有產品。如下圖所示 -

在本教學中,您已經學習了如何使用CREATE PROCEDURE語句編寫一個簡單的儲存過程,並使用CALL語句從SQL語句中呼叫它。