📅  最后修改于: 2023-12-03 15:03:47.125000             🧑  作者: Mango
在PL/SQL中,循环是一种控制结构。它允许您多次执行同样的操作,而不必对每个操作重复编写代码。
以下是一些在PL/SQL中实现循环的方法。
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
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
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.
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 循环。您可以根据需要选择适当的循环结构来处理您的数据。