MySQL存儲過程入門

在本教學中,我們將逐步介紹如何使用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 `zaixiandb`.`GetAllProducts`()
BEGIN
    SELECT * FROM zaixiandb.products;
END

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

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

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

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

調用存儲過程

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

CALL STORED_PROCEDURE_NAME();

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

CALL GetAllProducts();

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

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


上一篇: MySQL存儲過程 下一篇: MySQL視圖