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

Oracle 10g 缺乏 CONTINUE 語句的替代方案與 11g 新特性

     編輯:Oracle 教學

循環控制:10g 用 GOTO 模擬 CONTINUE,11g 原生支援

Oracle 10g 解決方案:標籤 + GOTO

10g 無 CONTINUE,需用 GOTO 跳轉到循環末尾的空語句:

DECLARE
  done BOOLEAN;
BEGIN
  FOR i IN 1..50 LOOP
    IF done THEN
      GOTO end_loop;  -- 跳過本次循環剩餘邏輯
    END IF;
    -- 循環主體邏輯
    <<end_loop>>
    NULL;  -- 必須有可執行語句作為標籤目標
  END LOOP;
END;

注意:標籤 <<label>> 後必須跟可執行語句(NULL; 最輕量),否則編譯報錯 PLS-00375。

Oracle 11g 原生 CONTINUE

DECLARE
  done BOOLEAN;
BEGIN
  FOR i IN 1..50 LOOP
    IF done THEN
      CONTINUE;  -- 直接進入下一次迭代
    END IF;
    -- 循環主體邏輯
  END LOOP;
END;

最佳實踐建議

  • 10g 代碼若需移植 11g,統一替換為 CONTINUE 提升可讀性。
  • 避免濫用 GOTO,僅在無法重構邏輯時作為最後手段。
  • 優先考慮調整循環條件或使用 IF-THEN-ELSE 結構自然跳過,減少跳轉語句。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved