讲义说明课件9_第1页
讲义说明课件9_第2页
讲义说明课件9_第3页
讲义说明课件9_第4页
讲义说明课件9_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第9章 PL/SQL基础2本章内容熟练掌握条件选择语句的使用熟练掌握循环语句的使用理解并掌握游标掌握异常的处理39.2 条件选择语句 选择结构IF条件语句CASE表达式4IF条件语句IF语句三种形式IF-THENIF-THEN-ELSE IF-THEN-ELSIFIF condition1 THEN statements1;ELSIF condition2 THEN statements2;, ELSE else_statements;END IF;5输入一个员工号修改该员工的工资,如该员工为10号部门,工资增加100;若为20号部门,工资增加150;若为30号部门,工资增加200;否则增加

2、300。 DECLARE v_deptno emp.deptno%type; v_increment NUMBER(4); v_empno emp.empno%type;BEGIN v_empno:=&x; SELECT deptno INTO v_deptno FROM emp WHERE empno=v_empno; IF v_deptno=10 THEN v_increment:=100; ELSIF v_deptno=20 THEN v_increment:=150; ELSIF v_deptno=30 THEN v_increment:=200; ELSE v_increment:=

3、300; END IF; UPDATE emp SET sal=sal+v_increment WHERE empno=v_empno;END;6CASE表达式两种形式简单CASE表达式搜索CASE表达式简单CASE表达式使用表达式确定返回值CASE search_exp WHEN exp1 THEN result1; WHEN exp2 THEN result2; WHEN expn THEN resultn; ELSE default_ result;END CASE; 7DECLARE v_deptno emp.deptno%type; v_increment NUMBER(4); v_

4、empno emp.empno%type;BEGIN v_empno:=&x; SELECT deptno INTO v_deptno FROM emp WHERE empno=v_empno; CASE v_deptno WHEN 10 THEN v_increment:=100; WHEN 20 THEN v_increment:=150; WHEN 30 THEN v_increment:=200; ELSE v_increment:=300;END CASE;UPDATE emp SET sal=sal+v_increment WHERE empno=v_empno; END; BEG

5、IN CASE &grade WHEN A THEN DBMS_OUTPUT.PUT_LINE(优异); WHEN B THEN DBMS_OUTPUT.PUT_LINE (优秀); WHEN C THEN DBMS_OUTPUT.PUT_LINE (良好); WHEN D THEN DBMS_OUTPUT.PUT_LINE (一般); WHEN F THEN DBMS_OUTPUT.PUT_LINE (较差); ELSE DBMS_OUTPUT.PUT_LINE (没有此成绩); END CASE;END;8搜索CASE表达式使用条件确定返回值CASE WHEN condition1 THE

6、N statements1; WHEN condition2 THEN statements2; WHEN conditionn THEN statementsn; ELSE else_statements;END CASE;9根据输入的员工号修改该员工工资。如工资低于1000,则工资增加200;如工资在1000-2000之间,则增加150;如工资在2000-3000之间,则增加100;否则增加50。 DECLARE v_sal emp.sal%type; v_increment NUMBER(4); v_empno emp.empno%type;BEGIN v_empno:=&x; SELE

7、CT sal INTO v_sal FROM emp WHERE empno=v_empno; CASE WHEN v_sal1000 THEN v_increment:=200; WHEN v_sal2000 THEN v_increment:=150; WHEN v_sal 50; END LOOP;END; 13WHILE循环WHILE循环是在LOOP循环基础上添加循环条件,即只有满足WHILE条件后才会执行循环体中的内容基本语法 WHILE condition LOOP statements;END LOOP; 14利用WHILE循环向temp_table表中插入50条记录。DECLA

8、RE v_counter BINARY_INTEGER :=1;BEGIN WHILE v_counter 6000 THEN RAISE e_highlimit; END IF;EXCEPTION WHEN e_highlimit THEN DBMS_OUTPUT.PUT_LINE(The salary is too large!); ROLLBACK;END; 53OTHERS异常处理器OTHERS异常处理器是一个特殊的异常处理器,可以捕获所有的异常。通常,OTHERS异常处理器总是作为异常处理部分的最后一个异常处理器,负责处理那些没有被其他异常处理器捕获的异常。 54DECLARE v_

9、sal emp.sal%TYPE; e_highlimit EXCEPTION;BEGIN SELECT sal INTO v_sal FROM emp WHERE ename=JOAN; UPDATE emp SET sal=sal+100 WHERE empno=7900; IF v_sal6000 THEN RAISE e_highlimit; END IF;EXCEPTION WHEN e_highlimit THEN DBMS_OUTPUT.PUT_LINE(The salary is too large!); ROLLBACK; WHEN OTHERS THEN DBMS_OUTP

10、UT.PUT_LINE(There is some wrong in selecting!);END; 55异常的传播可执行部分异常的传播如果当前语句块有该异常的处理器,则执行之,并且成功完成该语句块。然后,控制权传递到外层语句块。 如果当前语句块没有该异常的处理器,则通过在外层语句块中产生该异常来传播该异常。然后,执行对外层语句块执行步骤1。如果没有外层语句块,则该异常将传播到调用环境。 56DECLARE v_sal emp.sal%TYPE;BEGIN BEGIN SELECT sal INTO v_sal FROM emp WHERE ename=JOAN; EXCEPTION WHE

11、N NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE(There is not such an employee!); END; DBMS_OUTPUT.PUT_LINE(Now this is outputted by outer block!);END;There is not such an employee!Now this is outputted by outer block! 57DECLARE v_sal emp.sal%TYPE;BEGIN BEGIN SELECT sal INTO v_sal FROM emp WHERE deptno=10;

12、 EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE(There is not such an employee!); END; DBMS_OUTPUT.PUT_LINE(Now this is outputted by outer block!);EXCEPTION WHEN TOO_MANY_ROWS THEN DBMS_OUTPUT.PUT_LINE(There are more than one employee!);END;There are more than one employee!58声明部分和异常处理部分的异常立刻传播到外层语句块,即使当前语句块有异常处理器。 BEGIN DECLARE v_number NUMBER(6) :=ABC; BEGIN v_number:=10; EXCEPTION WHEN OTHERS THEN D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论