PL/pgSQL 循环语句
在本教程中,您将了解重复执行代码块的 PL/pgSQL 循环语句。
摘要:在本教程中,您将了解重复执行代码块的 PL/pgSQL 循环语句。
PL/pgSQL Loop 语句介绍
在 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 and 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 循环语句来创建无条件循环。