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 循环语句来创建无条件循环。