oracle实验指导书之全本(4)

2019-04-23 09:28

实验五

实验名称:PL/SQL编程 实验学时:4 实验目的:

1) 熟练掌握PL/SQL程序设计的基本知识。

2) 熟练掌握PL/SQL中控制结构的使用。具体包括选择结构语句(IF语句和CASE语句),

循环结构(四种循环结构)。 3) 熟练使用PL/SQL中系统函数。 4) 掌握PL/SQL中异常处理语句的使用

5) 掌握PL/SQL中SELECT语句和DML语句的综合运用。

实验内容及步骤

1、条件语句IF的语法及使用 IF <条件表达式> THEN

<执行语句> …… <执行语句n> [ELSIF <条件表达式> THEN

<执行语句> …… <执行语句n> …… ELSE

<执行语句>] END IF;

例1:声明一个整型变量Num,使用IF语句判断Num变量是正数、负数或0。 SET ServerOutput ON; DECLARE

Num INTEGER := -11; BEGIN

IF Num < 0 THEN

dbms_output.put_line('负数'); ELSIF Num >0 THEN

dbms_output.put_line('正数'); ELSE

dbms_output.put_line('0'); END IF; END;

2、分支语句CASE 语法: CASE <变量>

WHEN <表达式1> THEN 值1 WHEN <表达式2> THEN 值2 ……

WHEN <表达式n> THEN 值n ELSE 值n + 1 END;

例2、使用CASE语句根据给定的整数输出对应的星期值: SET ServerOutput ON; DECLARE

varDAY INTEGER := 3; Result VARCHAR2(20); BEGIN

Result := CASE varDAY WHEN 1 THEN '星期一' WHEN 2 THEN '星期二' WHEN 3 THEN '星期三' WHEN 4 THEN '星期四' WHEN 5 THEN '星期五' WHEN 6 THEN '星期六' WHEN 7 THEN '星期七' ELSE '数据越界' END;

dbms_output.put_line(Result); END;

3、练习循环结构语句的使用方法。 (1)循环语句LOOP…EXIT…END LOOP

<程序块1>

IF <条件表达式> THEN EXIT END IF

<程序块2> END LOOP;

例1、计算1到3的累加和。 SET ServerOutput ON; DECLARE

v_Num INTEGER := 1; v_Sum INTEGER := 0; BEGIN LOOP

v_Sum := v_Sum + v_Num; dbms_output.put_line(v_Num); IF v_Num = 3 THEN EXIT; END IF;

dbms_output.put_line(' + '); v_Num := v_Num + 1; END LOOP;

dbms_output.put_line(' = ');

dbms_output.put_line(v_Sum); END;

(2)循环语句LOOP…EXIT WHEN…END LOOP

<程序块1>

EXIT WHEN <条件表达式> <程序块2> END LOOP;

例2、计算1到3的累加和。 SET ServerOutput ON; DECLARE

v_Num INTEGER := 1; v_Sum INTEGER := 0; BEGIN LOOP

v_Sum := v_Sum + v_Num; dbms_output.put_line(v_Num); EXIT WHEN v_Num = 3; dbms_output.put_line(' + '); v_Num := v_Num + 1; END LOOP;

dbms_output.put_line(' = '); dbms_output.put_line(v_Sum); END;

(3)循环语句WHILE…LOOP…END LOOP WHILE <条件表达式> LOOP

<程序块> END LOOP;

(4)循环语句FOR…IN…LOOP…END LOOP FOR <循环变量> IN <初始值> ..<终止值> LOOP

<程序块> END LOOP;

例3、计算1到3的累加和。 SET ServerOutput ON; DECLARE

v_Num INTEGER; v_Sum INTEGER := 0; BEGIN

FOR v_Num IN 1..3 LOOP

v_Sum := v_Sum + v_Num;

dbms_output.put_line(v_Num); IF v_Num < 3 THEN

dbms_output.put_line(' + '); END IF; END LOOP;

dbms_output.put_line(' = '); dbms_output.put_line(v_Sum); END;

4、练习异常处理语句的使用方法。 EXCEPTION

WHEN <异常情况名> THEN <异常处理代码>

WHEN <异常情况名> THEN <异常处理代码> ……

WHEN OTHERS THEN <异常处理代码> 例1、

SET SERVEROUTPUT ON; DECLARE

x NUMBER; BEGIN

x:= 'a123';--向NUMBER类型的变量X中赋值字符串,导致异常 EXCEPTION

WHEN VALUE_ERROR THEN

DBMS_OUTPUT.PUT_LINE('数据类型错误'); END; 例2、

SET SERVEROUTPUT ON; DECLARE

v_result NUMBER(10):=0; BEGIN

v_result:= 100/0;

DBMS_OUTPUT.PUT_LINE('结果是:'||v_result); EXCEPTION

WHEN ZERO_DIVIDE THEN

DBMS_OUTPUT.PUT_LINE('除数是零!默认用1替代除数,结果是:'||100/1); END;

思考题: 1、 编写PL/SQL程序,使用LOOP?EXIT?END语句计算1—100之间所有偶数之和。 2、 创建表departments和表employees, 并为两张表输入若干数据。

表departments结构:

字段名称 字段类型 约束 Dep_id number 主键 Dep_name varchar2(20) 表employees结构:

字段名称 字段类型 约束 emp_id number 主键 emp_name varchar2(20) sex varchar2(20) title varchar2(20) wage number idcard varchar2(12)

dep_id number 外键 3、 编写PL/SQL程序,查询5号员工工资,如果工资小于3000,则加200员工资,并

提示信息“5号员工工资已更新。”,如果工资大于3000,则提示信息“5号员工工资为XXX,已达到规定标准。”

4、 编写PL/SQL程序,查询1号员工的工资,使用CASE语句输出其工资等级。工资

小于等于3000,等级为―低‖;工资大于3000,小于5000,等级为‖中‖;工资大于等于5000,等级为高;

5、 编写PL/SQL程序,查询的departments表中是否有部门号为“6”的记录,如果没

有,插入新记录部门号为6,部门名称为“后勤部”。如果有,显示查询结果。


oracle实验指导书之全本(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:策划店前婚纱秀场省钱计划

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: