Oracle中的PL/SQL(二)
一、程序的控制结构
PL/SQL程序段中有三种程序结构:
顺序结构
条件分支结构
循环结构
1、条件分支结构
(1)if condition then
statement1;
end if ;
(2)if condition then
statement1;
else
statement2;
end if ;
(3)if condition then
statement1;
elsif condition then
statement2;
else
statement3;
end if ;
2、循环结构
| 基本循环 |
LOOP
语句序列
EXIT WHEN 布尔表达式(为真);
END LOOP
|
|
WHILE LOOP循环
|
WHILE 条件 LOOP
语句序列
END LOOP
|
|
数值FOR LOOP循环
|
FOR 计数器v_i IN [REVERES]低界.1..10.高界
LOOP
语句序列
END LOOP
|
loop循环实例:
Declare
v_counter number:=41;
Begin
loop
insert into dept(deptno, dname) values (v_counter, 'loop');
v_counter:=v_counter+1;
exit when v_counter>50;
end loop;
commit;
End;
while循环实例:
Declare
v_counter number:=51;
Begin
while v_counter<=60 loop
insert into dept(deptno, dname) values (v_counter, 'while loop');
v_counter:=v_counter+1;
end loop;
commit;
End;
for循环实例:
Declare
v_counter number;
Begin
for v_counter in 61..65 loop
insert into dept(deptno, dname) values (v_counter, 'for loop');
end loop;
commit;
End;
二、异常的处理
由于PL/SQL程序块一旦产生异常而没有指出如何处理时,程序就会自动终止整个程序运行。
异常情况处理(EXCEPTION)是用来处理正常执行过程中出现未预料的错误事件,使得程序遇到错误能继续运行。
异常处理部分一般放在 PL/SQL 程序体的后半部,结构为:
DECLARE
BEGIN
…
EXCEPTION
WHEN first_exception THEN <code to handle first exception >
WHEN second_exception THEN <code to handle second exception >
WHEN OTHERS THEN <code to handle others exception >
END;
异常处理可以按任意次序排列,但 OTHERS 必须放在最后
例:
更新指定员工(7788)工资,如工资小于1500,则加100。
DECLARE
v_empno emp.empno%TYPE :=7788;
v_sal emp.sal%TYPE;
BEGIN
SELECT sal INTO v_sal FROM emp WHERE empno=v_empno;
IF v_sal<=1500 THEN
UPDATE emp SET sal=sal+100 WHERE empno=v_empno;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('数据库中没有编码为'||v_empno||'的员工');
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE('程序运行错误!请使用游标');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('发生其它错误!');
END;
常见的异常说明:
NO_DATA_FOUND SELECT INTO没有找到数据
TOO_MANY_ROWS SELECT INTO 返回多行
ZERO_DIVIDE 试图被零除
INVALID_NUMBER 转换一个数字失败

浙公网安备 33010602011771号