一个Oracle循环例子

  1. DECLARE  
  2.   v_index     NUMBER(2);  
  3.   v_tmp       VARCHAR2(10);  
  4.   v_month     VARCHAR2(10);  
  5.   v_yearmonth VARCHAR2(10);  
  6.   v_result    VARCHAR2(50);  
  7.   v_year      VARCHAR2(10);  
  8.   v_maxMonth  NUMBER(2);  
  9. BEGIN  
  10.    v_year := '';  
  11.    v_index := 0;  
  12.    v_result := '';  
  13.    LOOP  
  14.       v_index := v_index + 1;     
  15.         
  16.       if v_index>26 then  
  17.          exit;  
  18.       end if;  
  19.         
  20.       if (v_index < 13) then  
  21.          v_month := v_index;  
  22.       elsif (v_index > 12 and v_index < 25) then  
  23.          v_month := to_char(v_index - 12);         
  24.       elsif (v_index > 24) then  
  25.         v_month := to_char(v_index - 24);  
  26.       end if;  
  27.         
  28.       if (length(v_month) < 2) then  
  29.          v_month := '0' || to_char(v_month);         
  30.       else  
  31.         v_month := to_char(v_month);  
  32.       end if;              
  33.         
  34.       if (v_index > 12 and v_index < 25)  then  
  35.          v_year := '2013';       
  36.       elsif (v_index > 24) then    
  37.          v_year := '2014';     
  38.       else  
  39.          v_year := '2012';   
  40.       end if;         
  41.         
  42.       v_yearmonth := v_year || to_char(v_month);   
  43.        
  44.       dbms_output.put_line(v_yearmonth);   
  45.    END LOOP;   
  46. END;  


结果:

201201
201202
201203
201204
201205
201206
201207
201208
201209
201210
201211
201212
201301
201302
201303
201304
201305
201306
201307
201308
201309
201310
201311
201312
201401
201402

Oracle 数据库的 PL/SQL 编程中,`CONTINUE` 语句用于在循环体中提前结束当前迭代,并跳过后续代码,直接进入下一次循环迭代。这种机制对于在满足某些条件时跳过部分循环体的执行非常有用。 `CONTINUE` 语句通常用于 `LOOP`、`WHILE LOOP` 和 `FOR LOOP` 中,但必须注意,它只能在循环体内使用,否则会引发语法错误。 ### 使用 CONTINUE 语句的语法 ```plsql LOOP -- 循环体 IF <condition> THEN CONTINUE; END IF; -- 其他语句 END LOOP; ``` 其中 `<condition>` 是一个布尔表达式,当其结果为 `TRUE` 时,`CONTINUE` 语句将跳过当前循环体中剩余的代码,直接进入下一次循环。 ### 示例:使用 CONTINUE 跳过特定值 以下是一个在 `LOOP` 中使用 `CONTINUE` 的示例,该示例将打印从 1 到 10 的数字,但跳过偶数: ```plsql DECLARE i NUMBER := 0; BEGIN LOOP i := i + 1; EXIT WHEN i > 10; IF MOD(i, 2) = 0 THEN CONTINUE; -- 跳过偶数 END IF; DBMS_OUTPUT.PUT_LINE('i = ' || i); END LOOP; END; / ``` 输出结果将是: ``` i = 1 i = 3 i = 5 i = 7 i = 9 ``` 在这个例子中,当 `i` 是偶数时,`CONTINUE` 语句会跳过 `DBMS_OUTPUT.PUT_LINE`,从而不打印偶数值 [^3]。 ### 示例:在 FOR 循环中使用 CONTINUE PL/SQL 的 `FOR` 循环也支持 `CONTINUE` 语句。以下示例演示了如何在 `FOR` 循环中跳过某些值: ```plsql BEGIN FOR i IN 1..10 LOOP IF MOD(i, 3) = 0 THEN CONTINUE; -- 跳过能被3整除的数 END IF; DBMS_OUTPUT.PUT_LINE('i = ' || i); END LOOP; END; / ``` 输出结果将是: ``` i = 1 i = 2 i = 4 i = 5 i = 7 i = 8 i = 10 ``` 在这个例子中,所有能被 3 整除的值都会被跳过 [^4]。 ### CONTINUE 与 GOTO 的比较 虽然 `GOTO` 语句也可以实现跳转逻辑,但 `CONTINUE` 提供了更清晰和结构化的控制流。在 PL/SQL 中,推荐使用 `CONTINUE` 而不是 `GOTO` 来控制循环流程,因为 `GOTO` 可能会使代码难以维护和理解 。 ### 注意事项 - `CONTINUE` 语句只能在循环内部使用,否则会引发语法错误 [^2]。 - 在嵌套循环中,`CONTINUE` 只影响当前所在的循环层。 - `CONTINUE` 通常与 `IF` 语句结合使用,以实现条件跳过。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值