首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 存儲過程中的邏輯判斷與條件控制:IF 與 CASE 詳解

     編輯:MySQL 綜合教學

MySQL 存儲過程中的邏輯判斷與條件控制

在編寫 MySQL 存儲過程時,邏輯判斷與條件控制是不可或缺的核心功能,類似於程式語言中的 if 與 switch。MySQL 提供了 IF 與 CASE 兩種主要結構來實現條件分支,讓存儲過程能根據不同業務邏輯動態執行 SQL 語句。

1. IF 判斷語句

IF 的語法結構如下:

IF expression THEN commands 
[ELSEIF expression THEN commands] 
[ELSE commands] 
END IF;

說明:

  • expression:判斷條件表達式,結果為真(1)或假(0)。
  • ELSEIF 與 ELSE 為可選子句。
  • commands:條件成立時執行的 SQL 語句或程式碼塊。

實戰範例:根據參數決定是否含稅價格

假設有一張商品價格表,需根據輸入參數 isTaxed 判斷回傳含稅或未稅價格。

商品價格表數據

存儲過程定義兩個輸入參數:isTaxed(是否含稅)與 productName(商品名稱);內部變數 finalPrice 存放計算價格,taxRate 設定稅率。

存儲過程代碼

核心邏輯:若 isTaxed = TRUE,則 finalPrice = price * (1 + taxRate);否則直接取原價。

測試結果:

TRUE 情況測試

FALSE 情況測試

TRUE 代表回傳含稅價格,FALSE 則為原價。

2. CASE 多條件分支

當判斷條件較多時,CASE 結構更利於閱讀與維護,類似程式語言的 switch...case。

語法:

CASE case_expression 
    WHEN when_expression THEN commands 
    WHEN when_expression THEN commands 
    ... 
    ELSE commands 
END CASE;
  • case_expression:對應 switch 後的表達式。
  • WHEN when_expression:對應各 case 的值。
  • ELSE:對應 default,無匹配時執行。

實戰範例:不同商品類型對應不同稅率

假設:甜點稅率 0.05、奶製品 0.1、傢俱 0.2。新增變數 proType 存放商品類型,透過 CASE 判斷設定稅率。

CASE 存儲過程代碼

測試驗證:

  • 沙發(傢俱):1250 × 1.2 = 1500
  • 蛋糕(甜點):10 × 1.05 = 10.5

沙發測試結果

蛋糕測試結果

小結

IF 適合簡單雙向或少量分支邏輯;CASE 則在多條件、需匹配離散值時更具優勢。實際開發中靈活選擇,能讓存儲過程邏輯更清晰、效能更優。

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