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

Oracle PL/SQL 條件分支語句 (IF-THEN) 完整語法與範例

     編輯:Oracle 資料庫基礎

Oracle PL/SQL 條件分支語句 (IF-THEN) 完整語法與範例

條件分支是程式控制流程的基石。Oracle PL/SQL 提供三種 IF 結構:IF-THEN、IF-THEN-ELSE、IF-THEN-ELSIF,本文詳述語法規則與實務範例。

通用語法架構

IF condition THEN
   statements;
[ELSIF condition THEN
   statements;]
[ELSE
   statements;]
END IF;

三種結構詳細說明

1. IF-THEN(單一條件)

條件成立執行區塊,否則直接跳過。

DECLARE
   v_count NUMBER;
BEGIN
   SELECT COUNT(*) INTO v_count FROM cip_temps;
   IF (v_count > 0) THEN
      DBMS_OUTPUT.PUT_LINE('v_count 的值: ' || v_count);
   END IF;
END;
/

2. IF-THEN-ELSE(雙向分支)

條件成立執行 THEN 區塊,否則執行 ELSE 區塊。

DECLARE
   v_count NUMBER;
BEGIN
   SELECT COUNT(*) INTO v_count FROM cip_temps;
   IF (v_count > 11) THEN
      DBMS_OUTPUT.PUT_LINE('v_count 的值: ' || v_count);
   ELSE
      DBMS_OUTPUT.PUT_LINE('v_count 的值: ' || v_count);
   END IF;
END;
/

3. IF-THEN-ELSIF(多重條件)

依序評估多個條件,首個符合者執行對應區塊,全不符合執行 ELSE。

DECLARE
   v_count NUMBER;
BEGIN
   SELECT COUNT(*) INTO v_count FROM cip_temps;
   IF (v_count > 10) THEN
      DBMS_OUTPUT.PUT_LINE('IF 區塊 - v_count: ' || v_count);
   ELSIF (v_count = 10) THEN
      DBMS_OUTPUT.PUT_LINE('ELSIF 區塊 - v_count: ' || v_count);
   ELSE
      DBMS_OUTPUT.PUT_LINE('ELSE 區塊 - v_count: ' || v_count);
   END IF;
END;
/

關鍵語法規則

  • 每個 IF 必須以 END IF; 結束(分號不可省略)
  • ELSIF 拼寫無 E(非 ELSEIF)
  • 條件表達式結果必須為 BOOLEAN 型別
  • 可巢狀嵌套,建議縮排提升可讀性
  • NULL 參與比較結果為 UNKNOWN,視同 FALSE

效能與風格建議

  1. 優先將機率最高的條件放在最前面(短路評估)
  2. 超過 3-4 個 ELSIF 分支時,考慮改用 CASE 表達式
  3. 避免在條件中呼叫高成本函數,預先計算存入變數
  4. 使用 DBMS_UTILITY.GET_TIME 或 DBMS_PROFILER 分析分支效能

常見錯誤與除錯

錯誤現象原因修正
PLS-00103: Encountered symbol "END"漏寫 END IF 分號補上 END IF;
條件永不成立比較值含 NULL使用 NVL/COALESCE 處理
ELSIF 不生效拼寫為 ELSEIF修正為 ELSIF
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved