实验五
实验名称: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,部门名称为“后勤部”。如果有,显示查询结果。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库oracle实验指导书之全本(4)在线全文阅读。
相关推荐: