萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 建立預存程序完整教學範例

MySQL 預存程序基礎教學

預存程序是資料庫中一組為完成特定功能的 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 參數。

copyright © 萬盛學電腦網 all rights reserved