在本教學中,我們將逐步介紹如何使用CREATE PROCEDURE
語句開發第一個MySQL儲存過程。 另外,我們將向您展示如何從SQL語句呼叫儲存過程。
我們將開發一個名為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 `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語句中呼叫它。