八月 20, 2023
摘要:在本教程中,您将了解重复执行代码块的 PL/pgSQL 循环语句。
目录
PL/pgSQL 循环语句简介
loop
定义了一个无条件循环,该循环重复执行代码块,直到被exit
或return
语句终止。
下面说明了loop
语句的语法:
<<label>>
loop
statements;
end loop;
通常,您可以在循环内使用if
语句根据条件终止循环,如下:
<<label>>
loop
statements;
if condition then
exit;
end if;
end loop;
可以将循环语句放置在另一个循环语句中。当一个loop
语句放置在另一个loop
语句内时,称为嵌套循环:
<<outer>>
loop
statements;
<<inner>>
loop
/* ... */
exit <<inner>>
end loop;
end loop;
当有嵌套循环时,需要使用循环标签,以便可以在exit
和continue
语句中指定它,以指示这些语句引用的是哪个循环。
PL/pgSQL 循环语句示例
下面的例子展示了如何使用loop
语句来计算斐波那契数列。
do $$
declare
n integer:= 10;
fib integer := 0;
counter integer := 0 ;
i integer := 0 ;
j integer := 1 ;
begin
if (n < 1) then
fib := 0 ;
end if;
loop
exit when counter = n ;
counter := counter + 1 ;
select j, i + j into i, j ;
end loop;
fib := i;
raise notice '%', fib;
end; $$
输出:
NOTICE: 55
该代码块计算一个整数 (n
) 的第 n 个斐波那契数。
根据定义,斐波那契数列是从 0 和 1 开始的整数序列,后面的每个数字都是前面两个数字的和,例如 1、1、2 (1+1)、3 (2+1)、 5 (3 +2)、8 (5+3)、……
在声明部分,counter
变量被初始化为零 (0)。当counter
等于n
时,循环终止。以下 select 语句交换两个变量i
和j
的值:
SELECT j, i + j INTO i, j ;
在本教程中,您学习了如何使用 PL/pgSQL 循环语句来创建无条件循环。