預存程序是儲存在資料庫中的編譯過 SQL 程式碼單元,可接受參數、執行邏輯判斷、操作資料表,並回傳結果或錯誤代碼。本文詳細說明建立語法、參數模式與定界符處理。
CREATE PROCEDURE 程序名稱 ([參數清單])
BEGIN
-- 宣告區域變數
-- SQL 陳述式、流程控制等
END;
每個參數由三部分組成:模式 參數名 資料型態
| 模式 | 說明 | 預設值 |
|---|---|---|
IN | 輸入參數:呼叫端傳值給程序,程序內修改不影響外部 | 預設模式,可省略 |
OUT | 輸出參數:程序內賦值,呼叫端可取得回傳值 | 無 |
INOUT | 輸入輸出參數:呼叫端傳入,程序可修改並回傳 | 無 |
DELIMITER //
CREATE PROCEDURE proc_name (IN param_int INT)
BEGIN
DECLARE var_str VARCHAR(20);
IF param_int = 1 THEN
SET var_str = 'MySQL';
ELSE
SET var_str = 'PHP';
END IF;
INSERT INTO tb (name) VALUES (var_str);
END//
DELIMITER ;
DELIMITER // 變更結束符,結束後改回 DELIMITER ;。PROCE1() 與 proce1() 視為同一程序。DROP PROCEDURE 程序名稱;CALL proc_name(1); -- 傳入參數
CALL proc_name(@out_param); -- 接收 OUT 參數