📜  PL SQL-循环(1)

📅  最后修改于: 2023-12-03 15:03:47.125000             🧑  作者: Mango

PL/SQL中的循环

在PL/SQL中,循环是一种控制结构。它允许您多次执行同样的操作,而不必对每个操作重复编写代码。

以下是一些在PL/SQL中实现循环的方法。

1. FOR 循环

FOR 循环是一种计数循环结构,它允许您指定循环次数,并在每次迭代期间增加计数器。 FOR 循环可以使用以下语法:

FOR counter IN lower_bound..upper_bound LOOP
   statements;
END LOOP;

例如,以下代码段使用 FOR 循环迭代1到5,并在每个迭代中打印计数器的值:

BEGIN
   FOR i IN 1..5 LOOP
      DBMS_OUTPUT.PUT_LINE('Counter: ' || i);
   END LOOP;
END;

输出:

Counter: 1
Counter: 2
Counter: 3
Counter: 4
Counter: 5
2. WHILE 循环

WHILE 循环是一种条件循环结构,它允许您在循环体内测试条件,并在条件为真时重复执行循环。 WHILE 循环可以使用以下语法:

WHILE condition LOOP
   statements;
END LOOP;

例如,以下代码段使用 WHILE 循环计算数字n的阶乘,并在每个迭代中递减n的值:

DECLARE
   n NUMBER := 5;
   f NUMBER := 1;
BEGIN
   WHILE n > 0 LOOP
      f := f * n;
      n := n - 1;
   END LOOP;
   
   DBMS_OUTPUT.PUT_LINE('Factorial of 5 is ' || f);
END;

输出:

Factorial of 5 is 120
3. LOOP 循环

LOOP 循环是一种无限循环结构,它允许您在不知道要循环多少次的情况下重复执行循环。 LOOP 循环可以使用以下语法:

LOOP
   statements;
   EXIT WHEN condition;
END LOOP;

例如,以下代码段使用 LOOP 循环生成随机数,并在产生大于90的数字时退出循环:

DECLARE
   rand_num NUMBER;
BEGIN
   LOOP
      rand_num := DBMS_RANDOM.value(1,100);
      DBMS_OUTPUT.PUT_LINE('Random number: ' || rand_num);
      EXIT WHEN rand_num > 90;
   END LOOP;
   
   DBMS_OUTPUT.PUT_LINE('Finished generating random numbers.');
END;

输出:

Random number: 63
Random number: 7
Random number: 57
Random number: 51
Random number: 95
Finished generating random numbers.
4. FORALL 循环

FORALL 循环是一种高效的循环结构,它允许您在单个语句中操作多个数组元素。每个数组元素由一个索引标识符标识。 FORALL 循环可以使用以下语法:

FORALL index IN lower_bound..upper_bound
   statement;

例如,以下代码段使用 FORALL 循环将一个数组中的值插入到一个数据库表中:

DECLARE
   TYPE t_numbers IS VARRAY(10) OF NUMBER;
   numbers t_numbers := t_numbers(1,2,3,4,5,6,7,8,9,10);
BEGIN
   FORALL i IN numbers.FIRST..numbers.LAST
      INSERT INTO my_table VALUES (numbers(i));
END;

这将把数组numbers中的所有值都插入到表my_table中。

总结

在PL/SQL中,有多种循环结构可供选择,包括 FOR 循环、WHILE 循环、LOOP 循环和 FORALL 循环。您可以根据需要选择适当的循环结构来处理您的数据。