作为一门面向过程的编程语言,PL/SQL中肯定少不了逻辑控制语句.
一、条件控制语句
1、IF条件控制语句
和其它编程语言一样,PL/SQL中的IF条件控制语句也有三种形式。
形式1:
IF condition THEN
statements;
END IF;
形式2:
IF condition THEN
statements;
ELSE
statements;
END IF;
形式3:
IF condition THEN
statements;
ELSIF condition THEN
statements;
ELSE
statements;
END IF;
2、CASE条件控制语句
简单case语句
[ <<label_name>> ]
CASE case_expr --这是一个变量或者表达式
WHEN case_value1 THEN
statement;
WHEN case_value2 THEN
statement;
ELSE --当所有value都不匹配时执行,可省略
statment;
END CASE [label_name];
搜索式case语句
[ <<label_name>> ]
CASE --这里没有表达式
WHEN boolean_expr1 THEN
statement;
WHEN boolean_expr2 THEN
statement;
ELSE --当所有 boolean_expr都不成立时执行,可省略
statment;
END CASE [label_name];
二、LOOP循环控制语句
在PL/SQL中重复执行一条语句或一组语句,可以使用循环控制结构,PL/SQL中循环结构有下面4种形式:
1)基本循环结构
2)WHILE ... LOOP
3)FOR 循环
4)CURSOR FOR LOOP:在游标中介绍
1、基本循环结构
LOOP --循环开始标志
statement; --循环体
END LOOP; --循环结束标志
示例1:
declare
i number(10);
begin
i := 1;
LOOP
DBMS_OUTPUT.PUT_LINE('i值为:' || i);
EXIT WHEN i >= 10;
i := i+1;
END LOOP;
end;
/
示例2:
declare
i number(10);
begin
i := 1;
LOOP
DBMS_OUTPUT.PUT_LINE('i值为:' || i);
IF i >= 10 THEN
EXIT;
END IF;
i := i+1;
END LOOP;
end;
/
基本循环结构需要搭配 EXIT 退出循环,否则会一直执行下去.
2、WHILE ... LOOP
该循环结构本身可以终止循环,当 WHILE 后面 布尔表达式 为 true 时,循环体将会执行一次,然后重新判断 布尔表达式 是否为 true,直到为 false 时,退出循环.
WHILE boolean_expr --布尔表达式
LOOP
statement; --循环体
END LOOP;
示例:
declare
i number(10);
begin
i := 1;
WHILE i <= 10
LOOP
DBMS_OUTPUT.PUT_LINE('i值为:' || i);
i := i+1;
END LOOP;
end;
/
3、FOR 循环
FOR index IN [REVERSE] --index:循环次数 REVERSE:循环方式,默认从下边界到上边界,使用之后刚好相反
lower_bound .. upper_bound --分别对应FOR循环的下边界、上边界,用..连接
LOOP
statment; --循环体
END LOOP;
示例:
begin
FOR i IN 1..10
LOOP
DBMS_OUTPUT.PUT_LINE('i:' || i);
END LOOP;
end;
/
当lower_bound与upper_bound相等时,循环只执行一次,同时,这两者也可以用变量来代替,动态控制循环范围.
四、顺序控制语句
PL/SQL中一般都是从前到后的顺序执行,同时也可以使用 GOTO、NULL 来控制顺序.
GOTO:跳转到特定处执行随后的语句.
NULL:不会执行任何操作.