人大金仓数据库KingbaseES PLSQL流程控制语句-WHILE_LOOP语句

PL/SQL的WHILE_LOOP语句

关键字:

KingbaseES、PLSQL、WHILE_LOOP、人大金仓

WHILE_LOOP语句的介绍

WHILE LOOP 语句在条件为 TRUE 时运行一个或多个语句。WHILE LOOP 语句在条件变为 FALSE 或 NULL 时结束,当循环内的语句将控制转移到循环外或引发异常时也会结束。

(1)WHILE_LOOP语句的语法

while_loop_statement ::=

WHILE boolean_expression

LOOP statement...

END LOOP [ label ] ;

(2)WHILE_LLOP语句的解析

  • boolean_expression

值为 TRUE、FALSE 或 NULL 的表达式。boolean_expression 在循环的每次迭代开始时进行评估。如果其值为 TRUE,则 LOOP 之后的语句将运行。否则,控制转移到 WHILE LOOP 语句之后的语句。

  • statement

为防止无限循环,至少有一条语句必须将 boolean_expression 的值更改为 FALSE 或 NULL,将控制转移到循环外,或引发异常。

  • label

标识 while_loop_statement 的标签(参见statement ::= , label ::= )。CONTINUE、EXIT和 GOTO 语句可以引用这个标签。标签提高了可读性,尤其是当 LOOP 语句嵌套时,但前提是确保 END LOOP 语句中的标签与同一 LOOP 语句开头的标签匹配。

WHILE_LOOP语句的使用场景

  • WHILE_LOOP嵌套控制语句

在WHILE_LOOP语句中嵌套条件选择IF语句,是为了允许在每次循环迭代中根据条件判断是否执行insert语句。使用这种形式的嵌套,需要确保if语句的条件能够根据动态地变化,进行正确的判断。需要注意以下几点:在进入WHILE_LOOP循环时,要确保设置正确的初始条件;在WHILE_LOOP循环体内,根据需要更新循环条件,以便适时终止循环或进行下一次循环;根据if语句的结果,在需要的情况下可以使用特定语句提前终止循环,或跳过当前循环。

CREATE OR REPLACE FUNCTION func1() RETURNS INT AS $$

DECLARE

a1 INT :=10;

BEGIN

WHILE a1 < 15 LOOP

IF a1 = 12 THEN

INSERT INTO t1 values(a1,'kingbase12');

END IF;

a1 := a1 +1;

END LOOP;

RETURN a1;

END;

$$ LANGUAGE plpgsql;

SELECT func1();

SELECT * FROM t1;

  • 使用exit退出WHILE_LOOP语句

使用exit语句可以提前退出WHILE_LOOP,用于在需要时提前终止循环,避免不必要的迭代,在满足条件时,使用exit语句立即退出循环,此时存在于循环体内exit后的语句将不再执行。

CREATE OR REPLACE FUNCTION func1() RETURNS INT AS $$

DECLARE

i INT :=3;

BEGIN

WHILE i > 0 LOOP

EXIT;

i := i-1;

END LOOP;

RETURN i;

END;

$$ LANGUAGE plpgsql;

SELECT func1();

参考资料

《 KingbaseES_PLSQL过程语言参考手册》

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值