首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 存儲過程輸入輸出參數實戰示例

     編輯:MySQL 資料庫相關知識

完整代碼

DROP PROCEDURE IF EXISTS my_procedure;
CREATE PROCEDURE my_procedure(
    IN my_id INT,
    OUT my_name CHAR(50)
)
BEGIN
    SELECT list_name INTO my_name 
    FROM aa_list 
    WHERE list_id = my_id;
END;

-- 調用示例
CALL my_procedure(24, @a);
SELECT @a;

參數模式詳解

模式關鍵字方向說明
輸入IN調用者 → 過程默認模式,過程內可讀不可寫(修改不影響外部)
輸出OUT過程 → 調用者過程內初始為 NULL,需賦值,返回給調用者
輸入輸出INOUT雙向調用者傳入初始值,過程可修改並返回新值

調用細節

  1. OUT/INOUT 參數必須傳遞用戶變量(@var)接收返回值
  2. CALL proc(@out_var); 後用 SELECT @out_var; 查看結果
  3. 同一會話中用戶變量持久化,可跨多次調用復用

INOUT 進階示例:計算器

CREATE PROCEDURE calc(INOUT value INT, IN operand INT, IN operator CHAR(1))
BEGIN
    CASE operator
        WHEN '+' THEN SET value = value + operand;
        WHEN '-' THEN SET value = value - operand;
        WHEN '*' THEN SET value = value * operand;
        WHEN '/' THEN SET value = value / operand;
    END CASE;
END;

-- 使用
SET @result = 10;
CALL calc(@result, 5, '+');  -- @result = 15
CALL calc(@result, 3, '*');  -- @result = 45
SELECT @result;

最佳實踐

  • 明確指定 IN/OUT/INOUT,提高可讀性
  • OUT 參數在過程開頭初始化(如 SET out_param = '';)
  • 避免過多 OUT 參數,考慮返回結果集或 JSON
  • 文檔化參數含義、預期數據類型、邊界條件
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved