在本教學中,我們將逐步介紹如何使用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
,並把括弧放在存儲過程的名字之後。BEGIN
和END
之間的部分稱為存儲過程的主體。將聲明性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語句中調用它。