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

MySQL 儲存過程中跳出結構:LEAVE 標籤替代 RETURN 實現提前退出

     編輯:MySQL 資料庫相關知識

MySQL 儲存過程不支援 RETURN 直接退出(僅函數可用)。需結合標籤與 LEAVE 實現流程跳出。

語法模式

CREATE PROCEDURE proc_name(params)
label_name: BEGIN
  -- 邏輯判斷
  IF condition THEN
    LEAVE label_name;  -- 直接跳出 BEGIN...END 區塊
  END IF;
  -- 後續邏輯不會執行
END;

完整範例

CREATE PROCEDURE `proname`(uid INT, rid INT, OUT errorno INT, ...)
top: BEGIN
  -- 業務檢查
  IF uid <= 0 THEN
    SET errorno = -1;
    LEAVE top;  -- 立即退出過程
  END IF;

  -- 正常流程
  SELECT * FROM users WHERE id = uid;
  -- ...
END;

關鍵點

  • 標籤命名規則:識別符 + :(如 top:、proc_block:)
  • LEAVE label 可跳出 BEGIN...END、LOOP、WHILE、REPEAT、IF、CASE 區塊
  • ITERATE label 為重新開始迴圈(類似 continue)
  • 輸出參數 OUT 需在 LEAVE 前賦值,否則呼叫端收到 NULL

對照:函數可用 RETURN

CREATE FUNCTION fn_test(p INT) RETURNS INT
BEGIN
  IF p < 0 THEN RETURN -1; END IF;
  RETURN p * 2;
END;

儲存過程用 LEAVE 標籤,函數用 RETURN,兩者退出機制不同,切勿混淆。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved