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

MySQL 5.0 儲存過程入門:建立、呼叫、刪除、流程控制與中繼資料查詢

     編輯:MySQL 資料庫相關知識

MySQL 5.0 引入儲存過程,將業務邏輯下沉至資料庫層,減少網路往返、提升安全性與效能。本文涵蓋建立、參數傳遞、呼叫、刪除、流程控制、區塊標籤、常用中繼資料查詢。

1. 建立儲存過程

CREATE PROCEDURE sp_name()
BEGIN
    -- SQL 語句
END;

參數模式

  • IN:輸入參數(預設),呼叫者傳入,過程內可讀不可寫回。
  • OUT:輸出參數,過程內賦值,呼叫者可讀。
  • INOUT:雙向參數,呼叫者傳入,過程內可修改並回傳。
CREATE PROCEDURE sp_get_user(IN p_id INT, OUT p_name VARCHAR(50))
BEGIN
    SELECT name INTO p_name FROM users WHERE id = p_id;
END;

2. 呼叫儲存過程

CALL sp_name();              -- 無參數
CALL sp_get_user(1, @name);  -- 有參數,OUT 用用戶變數接收
SELECT @name;

注意: 即使無參數,呼叫時也必須加括號 ()。

3. 刪除儲存過程

DROP PROCEDURE sp_name;

限制:不能在一個儲存過程中刪除另一個儲存過程,只能呼叫。

4. 區塊、標籤與流程控制

區塊與標籤

BEGIN
    -- 語句
END;

label_name: BEGIN
    -- 語句
    LEAVE label_name;  -- 跳出區塊
END label_name;

條件判斷

IF condition THEN
    statement;
ELSE
    statement;
END IF;

迴圈三種

-- WHILE
[label:] WHILE expr DO
    statements;
END WHILE [label];

-- LOOP (需配合 LEAVE/ITERATE 跳出)
[label:] LOOP
    statements;
END LOOP [label];

-- REPEAT UNTIL
[label:] REPEAT
    statements;
UNTIL expr
END REPEAT [label];

5. 常用中繼資料查詢

-- 列出所有儲存過程基本資訊
SHOW PROCEDURE STATUS;

-- 查看特定過程完整定義
SHOW CREATE PROCEDURE sp_name;

實戰建議

  • 將高頻、複雜、需事務一致性的業務邏輯封裝為儲存過程。
  • 輸入參數嚴格驗證,防止 SQL 注入(儲存過程本身不免疫注入)。
  • 避免在儲存過程中進行大量計算或外部呼叫,影響資料庫吞吐。
  • 版本控管:將 SHOW CREATE PROCEDURE 輸出納入程式碼倉庫。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved