2.6.1 IF-THEN-ELSE
IF boolean_expression1 THEN
sequence_of_statements1;
[ ELSIF boolean_expression2 THEN
sequence_of_statements2;]
. . .
[ELSE
sequence_of_statementsk;]
END IF;
每个语句序列仅当其相关的布尔条件求值为TRUE的时候才会被执行。
如果条件求值为FALSE或 NULL,那么该语句序列将不会被执行。
2.6.2 循环
2.6.2.1 简单循环
LOOP
sequence_of_statement;
END LOOP;
其中sequence_of_statement将被无限次地执行,因为这个循环没有终止。可以在sequence_of_satement中加入EXIT语句。
如下:
EXIT WHEN condition;
或者
IF condition THEN
EXIT;
END IF;
2.6.2.2 WHILE循环
语法:
WHILE condition LOOP
sequence_of_statements;
END LOOP;
如果condition的布尔值为TURE则执行sequence_of_statement。否则将终止循环而控制将转到END LOOP语句后面的继续进行。
2.6.2.3 数字式FOR循环
FOR loop_counter IN [REVERSE] low_bound..high_bound LOOP
sequence_of_statements
END LOOP;
这里loop_counter是隐式声明的索引变量,每循环一次增加1。low_bound和high_bound指定迭代次数。
FOR循环的循环索引被隐式声明为BINARY_INTEGER。限制循环范围的最大值和最小值可以是能够被转换为数字值的任何表达式。
2.6.3 GOTO和标号
GOTO label;
标号为 <<label_name>>
对于块、循环、IF语句,从外层跳转到内层循环是非法的。
从一个IF子句跳转到另一个子句中也是非法的。
从一个异常处理块内部跳转到当前快是非法的。
PS: 在编程中,应该尽量少使用GOTO语句。不必要的GOTO语句会产生出”通心粉(spaghetti code)。
2.6.3 NULL语句
NULL语句不做任何事情,它只是一个占位符。