Oracle循环语句

1,当不确定多少次要执行循环体并且希望循环体至少执行一次,则会使用LOOP语句
LOOP
   {...statements...}    - 执行每个通过循环的代码语句
END LOOP;

实例:

LOOP
   week := day * 7;
   EXIT WHEN week > 21;
END LOOP;


此时当week值大于21时终止,可以使用EXIT语句或当遇到EXIT WHEN语句的结果为TRUE时终止LOOP语句。

2,当想要执行循环主体固定次数时,可使用FOR LOOP循环
FOR loop_counter IN [REVERSE] lowest_number..highest_number
LOOP
   {...statements...}
END LOOP;

loop_counter - 循环计数器变量。
REVERSE - 可选的。 如果指定,循环计数器将反向计数。(如果指定了REVERSE,那么highest_number将是loop_counter的起始值,而lowest_number将是loop_counter的结束值。)
lowest_number - loop_counter的起始值。
highest_number - loop_counter的结束值。
statements - 执行每个通过循环的代码语句。

实例:

FOR test IN 1..10
LOOP
   rtest := test * 2;
END LOOP;

循环将10次。 test将从1开始并在10结束。

FOR test IN REVERSE 1..10
LOOP
   rtest := test * 2;
END LOOP;


使用REVERSE,相反的顺序运行,同样循环10次,test将从10开始并在1结束。

3,当想要获取并处理光标中的每条记录时,将使用CURSOR FOR LOOP。 当光标中的所有记录都被取出时,CURSOR FOR LOOP将终止。
FOR record_index in cursor_name
LOOP
   {...statements...}
END LOOP;

record_index - 记录的索引。
cursor_name - 希望从中获取记录的光标的名称。
statements - 执行代码的语句通过CURSOR FOR LOOP。

实例:

CREATE OR REPLACE Function TotalPrice
   ( name_in IN varchar2 )
   RETURN varchar2
IS
   total_p number(6);

   cursor c1 is
     SELECT bprice
     FROM book
     WHERE bname = name_in;

BEGIN

   total_p := 0;

   FOR emp_c in c1
   LOOP
      total_p := total_p + emp_c.bprice;
   END LOOP;

   RETURN total_p;

END;

上例中,创建了一个名为c1的游标。 从光标c1中取出所有记录后,CURSOR FOR循环将终止。

4,当不确定执行循环体的次数,并且循环体可能一次都不会执行,则使用WHILE LOOP。
WHILE condition
LOOP
   {...statements...}    - 执行每个通过循环的代码语句。
END LOOP;

condition - 条件是每次通过循环的测试。 如果条件评估为TRUE,则执行循环体。 如果条件评估为FALSE,则循环终止。

实例:

WHILE money <= 200
LOOP
   money := price * 10;
END LOOP;

当money的值大于200,循环将终止,WHILE LOOP将在money <= 200时继续,并且当money> 200,循环将终止。

5,当不知道想要循环体执行多少次时,可使用模拟(Oracle中是没有REPEAT UNTIL LOOP)的REPEAT UNTIL LOOP语句。
LOOP

   {...statements...}    - 执行每个通过循环的代码语句。

   EXIT [ WHEN boolean_condition ];

END LOOP;

boolean_condition - 可选的。 这是终止循环的条件。

实例:

LOOP
   money := price * 10;
   EXIT WHEN money > 2000;
END LOOP;

我们希望循环重复,直到money的值大于2000时终止,所以使用EXIT WHEN语句。

6,EXIT语句最常用于终止LOOP语句。
EXIT [WHEN boolean_condition];

boolean_condition - 可选的。 这是终止LOOP的条件。

实例:

LOOP
   money := price * 10;
   EXIT WHEN money > 2000;
END LOOP;

当money的值大于2000时,LOOP循环会终止。

你可能感兴趣的:(Oracle)