Oracle实验四:PL/SQL编程实验指南

需积分: 24 1 下载量 159 浏览量 更新于2024-07-16 收藏 1.1MB DOCX 举报
Oracle实验四PL/SQL编程 Oracle实验四PL/SQL编程是Oracle数据库管理系统中的一种编程语言,用于编写存储过程、存储函数和触发器等高级数据库对象。该实验的目的是掌握PL/SQL语句块、PL/SQL的基本语法、PL/SQL的控制结构,以及PL/SQL块中使用复合数据类型和游标的方法。 一、PL/SQL语句块 PL/SQL语句块是Oracle数据库管理系统中的一种编程单元,由 declare、begin、exception 和 end 四部分组成。Declare 部分用于声明变量和游标,Begin 部分用于执行 SQL 语句和 PL/SQL 语句,Exception 部分用于处理异常,End 部分用于结束语句块。 在本实验中,我们定义了一个包含声明、执行和异常处理的语句块,以查询 EMP 表中职工号 7788 的工资为例。首先,我们声明一个变量 v_sal,类型为表中对应属性的类型,用 %type 声明。然后,在 Begin 部分,我们写了一个 Select 语句,查询 EMP 表中职工号 7788 的工资,并将结果存储在 v_sal 变量中。接着,我们进行 If 判断,如果 v_sal 小于 3000,则执行 Update 语句,把工资更改为 3000。最后,在 Exception 部分,我们处理 NO_DATA_FOUND 异常,输出没有该员工的信息。 二、PL/SQL基本语法 PL/SQL 的基本语法包括变量声明、赋值语句、控制结构、游标和异常处理等。变量声明用于声明变量的名称和类型,赋值语句用于将值赋给变量,控制结构包括 IF 语句、LOOP 语句和 CASE 语句等,用于控制程序的执行流程。游标用于遍历查询结果,异常处理用于处理程序中的错误。 在 PL/SQL 中,我们可以使用 %type 声明变量的类型,例如:`declare v_sal emp.sal%type;` 这里,v_sal 变量的类型为 emp 表中的 sal 属性的类型。我们也可以使用 Assign 语句赋值给变量,例如:`v_sal := 3000;` 这里,我们将 v_sal 变量的值赋为 3000。 三、PL/SQL控制结构 PL/SQL 控制结构包括 IF 语句、LOOP 语句和 CASE 语句等。IF 语句用于根据条件执行不同的分支,例如: ```plsql if v_sal < 3000 then update emp set sal = 3000 where empno = 7788; end if; ``` 这里,我们根据 v_sal 变量的值判断,如果小于 3000,则执行 Update 语句。 LOOP 语句用于重复执行某个语句块,例如: ```plsql loop fetch c1 into v_sal; exit when c1%notfound; dbms_output.put_line(v_sal); end loop; ``` 这里,我们使用游标 c1 遍历查询结果,并将结果输出到屏幕上。 CASE 语句用于根据不同的条件执行不同的分支,例如: ```plsql case when v_sal < 2000 then dbms_output.put_line('低工资'); when v_sal < 3000 then dbms_output.put_line('中等工资'); else dbms_output.put_line('高工资'); end case; ``` 这里,我们根据 v_sal 变量的值判断,并输出相应的信息。 四、PL/SQL块中使用复合数据类型和游标 PL/SQL 块中可以使用复合数据类型和游标来存储和处理数据。例如,我们可以使用 Record 类型来存储多个变量,例如: ```plsql declare type emp_rec is record (empno number, ename varchar2(10)); v_emp_rec emp_rec; begin select empno, ename into v_emp_rec from emp where empno = 7788; dbms_output.put_line(v_emp_rec.ename); end; ``` 这里,我们使用 Record 类型来存储 empno 和 ename 两个变量,并将其赋值给 v_emp_rec 变量。然后,我们使用 Select 语句将查询结果存储在 v_emp_rec 变量中,并输出 ename 的值。 我们也可以使用游标来遍历查询结果,例如: ```plsql declare cursor c1 is select * from emp where empno = 7788; v_emp_rec c1%rowtype; begin open c1; loop fetch c1 into v_emp_rec; exit when c1%notfound; dbms_output.put_line(v_emp_rec.ename); end loop; close c1; end; ``` 这里,我们使用游标 c1 遍历查询结果,并将结果输出到屏幕上。 五、PL/SQL异常处理 PL/SQL 异常处理用于处理程序中的错误。例如,在我们的实验中,我们处理了 NO_DATA_FOUND 异常,输出没有该员工的信息。我们可以使用 Exception 部分来处理异常,例如: ```plsql begin select sal into v_sal from emp where empno = 7788; exception when no_data_found then dbms_output.put_line('There is no such employee'); end; ``` 这里,我们使用 Exception 部分来处理 NO_DATA_FOUND 异常,并输出没有该员工的信息。 六、存储过程、存储函数和触发器 存储过程、存储函数和触发器是 Oracle 数据库管理系统中的高级数据库对象。存储过程是一种可以执行多个 SQL 语句的程序,存储函数是一种可以返回值的程序,触发器是一种可以在数据库中自动执行的程序。 在本实验中,我们学习了如何创建存储过程、存储函数和触发器,以及如何使用它们来管理数据库。我们也学习了如何使用 PL/SQL 语句块来编写存储过程、存储函数和触发器。 七、实验总结 本实验我们学习了 PL/SQL 语句块、PL/SQL 基本语法、PL/SQL 控制结构、PL/SQL 块中使用复合数据类型和游标、PL/SQL 异常处理,以及存储过程、存储函数和触发器。我们通过实验和实践,掌握了 PL/SQL 编程的基本技能,为后续的数据库管理和开发打下了坚实的基础。