PL/SQL中的逻辑控制代码与java类似,同样也有条件判断和循环结构。
这里将常用的几种结构举例讲解一下。
首先是条件判断,在PL/SQL中,条件判断分为if...else结构以及case...end case结构。
1. IF...ELSE
IF...ELSE的基本结构如下:
IF condition THEN
--代码
END IF;
如果有多个分支,写法如下:
IF condition THEN
--代码
ELSE
--代码
END IF;
或者
| IF condition THEN --代码 ELSIF condition THEN --代码 ELSE --代码 END IF; |
比如,查找出emp表中员工编号为7788的员工的部门编号,如果是10,则为其加薪3000,如果是20,则加2000,如果是30,则加1000。
|
DECLARE |
2. CASE...END CASE
CASE...END CASE的结构如下:
|
CASE |
修改刚才的代码,找出7788的部门编号,如果是10,则输出后骨干,如果是20,则输出精英,如果是30,则输出普通员工,代码如下:
| DECLARE l_deptno emp.deptno%type; BEGIN SELECT deptno INTO l_deptno FROM emp WHERE empno = 7788; CASE WHEN l_deptno = 10 THEN DBMS_OUTPUT.put_line('骨干员工'); WHEN l_deptno = 20 THEN DBMS_OUTPUT.put_line('精英员工'); ELSE DBMS_OUTPUT.put_line('普通员工'); END CASE; END; / |
LOOP循环的结构如下:
| LOOP --循环代码 EXIT[ WHEN 退出条件]; END LOOP; |
比如循环输出1到100之间的数字,遇到70停止循环
| DECLARE l_count number(3) := 1; BEGIN LOOP DBMS_OUTPUT.put_line(l_count); IF l_count = 70 THEN EXIT; END IF; l_count := l_count +1; END LOOP; END; / |
还可以写成
| DECLARE l_count number(3) := 1; BEGIN LOOP DBMS_OUTPUT.put_line(l_count); EXIT WHEN l_count = 70; l_count := l_count +1; END LOOP; END; / |
4. WHILE循环结构
WHILE循环结构如下:
|
WHILE condition LOOP |
还是上面的例子,用WHILE循环可以写成
| DECLARE l_count number(3) := 1; BEGIN WHILE l_count <= 70 LOOP DBMS_OUTPUT.put_line(l_count); l_count := l_count +1; END LOOP; END; / |
5. FOR循环结构
FOR循环结构如下:
| FOR 计数器变量 in 集合 LOOP --循环代码 END LOOP; |
那么上面的例子可以用FOR循环写成
| DECLARE BEGIN FOR l_count in 1..100 LOOP DBMS_OUTPUT.put_line(l_count); IF l_count = 70 THEN EXIT; END IF; END LOOP; END; / |
可以看到这里的EXIT类似于java中的break,用来跳出循环用的。
FOR循环代码在所有循环语句中最为简洁,也是最灵活的用法,下一篇我们开始讲存储过程以及存储函数。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8061238/viewspace-588642/ ,如需转载,请注明出处,否则将追究法律责任。