PL/SQL中的异常及PL/SQL中的控制语句
[/color][color=orange]SQL> set serveroutput on
SQL> remark 控制语句
SQL> remark 异常处理
www.zzzyk.com
SQL> REMARK ..........................................................
SQL> REMARK IF...THEN 的判断语法
SQL> remark IF 条件标示式 WHEN 执行语句 END IF; 示例如下:
SQL> REMARK 使用分组函数 条件判断的按列
SQL> EDIT
Wrote file afiedt.buf
1 DECLARE
2 SUMSAL SCOTT.EMP.SAL%TYPE;
3 BEGIN
4 SELECT SUM(SAL) INTO SUMSAL FROM SCOTT.EMP GROUP BY DEPTNO HAVING DEPTNO=30;
5 IF SUMSAL>5000 THEN
6 DBMS_OUTPUT.PUT_LINE('部门30的工资总额已经超过了预算,供'||SUMSAL);
7 END IF;
8* END;
SQL> /
部门30的工资总额已经超过了预算,供9400
PL/SQL procedure successfully completed.
SQL> REMARK 如果存在了分支条件,使用 IF...ELSIF..ELSE...END IF;
SQL> REMARK 多元分支条件控制case
SQL> REMARK 连接scott账户
SQL> conn scott/tiger;
Connected.
SQL> DECLARE
2 THESAL EMP.SAL%TYPE;
3 BEGIN
4 SELECT SAL INTO THESAL FROM EMP WHERE EMPNO=7369;
5 CASE
6 WHEN THESAL<1000 THEN
7 DBMS_OUTPUT.PUT_LINE('低工资');
8 WHEN THESAL>=1000 THEN
9 DBMS_OUTPUT.PUT_LINE('一般工资');
10 ELSE
11 DBMS_OUTPUT.PUT_LINE('高工资');
12 END CASE;
13 END;
14 /
PL/SQL procedure successfully completed.
SQL> SET SERVEROUTPUT ON;
SQL> REMARK 循环控制loop和end loop ; 之间的语句将无限次的执行,如果要跳出则使用exit;
SQL> remark 语法:loop exit when 条件表达式;执行语句 ; end loop;
SQL> remark 案例:累加的例子
SQL> declare
2 cou int default 10;
3 result int :=0;
4 begin
5 DBMS_OUTPUT.PUT_LINE('循环开始.....');
6 LOOP
7 EXIT WHEN COU>20;
8 result :=result + cou;
9
10 DBMS_OUTPUT.PUT_LINE('进入循环..'||cou||'结果是:'||result);
11 cou :=cou+1;
12 end loop;
13 dbms_output.put_line('最后的结果是:'||result);
14 end;
15 /
循环开始.....
进入循环..10结果是:10
进入循环..11结果是:21
进入循环..12结果是:33
进入循环..13结果是:46
进入循环..14结果是:60
进入循环..15结果是:75
进入循环..16结果是:91
进入循环..17结果是:108
进入循环..18结果是:126
进入循环..19结果是:145
进入循环..20结果是:165
最后的结果是:165
PL/SQL procedure successfully completed.
SQL> remark 循环控制还可以使用for 循环和while 进行循环,这两种循环都是以loop循环作为基础
SQL> remark 语法:for 变量 in 起始值..结束值 loop 执行语句; end loop;
SQL> remark 注:for循环的语法控制中,变量的定义不用声明,变量的边界值都会进入循环;.......
案例:
SQL> declare
2 result int :=0;
3 begin
4 dbms_output.put_line('循环开始...');
5 for cou in 10..20
6 loop
7 result :=result+cou;
8 dbms_output.put_line('进入循环..'||cou||'结果是:'||result);
9 end loop;
10 dbms_output.put_line('循环结束:'||result);
11 end;
12 /
循环开始...
进入循环.