預存程序是資料庫中一組為完成特定功能的 SQL 語句集,經編譯後存儲在資料庫中。本文透過一個簡單的加法運算範例,詳細說明如何建立、呼叫與管理 MySQL 預存程序。
以下範例建立名為 pr_add 的預存程序,接收兩個整數參數 a 和 b,並回傳其總和:
DROP PROCEDURE IF EXISTS pr_add;
CREATE PROCEDURE pr_add (
IN a INT,
IN b INT
)
BEGIN
DECLARE c INT;
IF a IS NULL THEN
SET a = 0;
END IF;
IF b IS NULL THEN
SET b = 0;
END IF;
SET c = a + b;
SELECT c AS sum;
/*
注意:RETURN 只能用於函數,不能在預存程序中使用
*/
END;
建立完成後,可透過以下方式呼叫:
-- 直接傳遞參數
CALL pr_add(10, 20);
-- 使用使用者變數
SET @a = 10;
SET @b = 20;
CALL pr_add(@a, @b);
IN 為輸入參數,另有 OUT(輸出)與 INOUT(輸入輸出); 暫時改為 // 或 $$,避免程序內部的分號被誤判為結束DECLARE 宣告區域變數,作用域僅限於 BEGIN...END 區塊IF...THEN...ELSE...END IF、WHILE、LOOP 等控制結構原文中的 SET c = a b; 缺少運算子,正確應為 SET c = a + b;。此外,預存程序無法使用 RETURN 回傳值,若需回傳值請改用函數或透過 OUT 參數。