在編寫 MySQL 存儲過程時,邏輯判斷與條件控制是不可或缺的核心功能,類似於程式語言中的 if 與 switch。MySQL 提供了 IF 與 CASE 兩種主要結構來實現條件分支,讓存儲過程能根據不同業務邏輯動態執行 SQL 語句。
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 則為原價。
當判斷條件較多時,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 判斷設定稅率。

測試驗證:


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