Oracle实验四:PL/SQL编程实验指南
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 编程的基本技能,为后续的数据库管理和开发打下了坚实的基础。
![](https://csdnimg.cn/release/download_crawler_static/11989574/bg4.jpg)
剩余17页未读,继续阅读
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/1990e860a578474884047f98c84e7445_qq_41941875.jpg!1)
- 粉丝: 1w+
- 资源: 16
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 岩石滑动与断层冲击地压:声发射特征分析
- 新时代煤炭工业八大战略新取向剖析
- 开采强度对华亭矿区冲击地压危险性的影响分析
- 新安煤矿探采对比:影响安全生产的关键因素与技术支撑
- 210MW循环流化床锅炉引风机变频改造优化与节能效果
- 浅埋煤层开采沉陷预测:方法应用与影响分析
- 优化巷道过陷落柱支护方案:数值模拟与现场试验
- 坚硬顶板定向断裂爆破技术:安全高效采煤新方案
- 北航2019算法课作业解析:投资策略与凸子多边形优化
- 断层破碎带垮冒下堆积体边界抗力分布关键影响因素
- 哈拉沟选煤厂优化末煤系统提高效率与处理能力
- 瓦斯涌出影响下采动煤体蠕变失稳研究
- 提升煤矿装载效率的可控箕斗定量装载设备设计
- 水分调控下烟煤瓦斯吸附特性对比研究
- 重介质悬浮液密度控制硬件设计与选型探讨
- 坚硬顶板巷道支护参数设计:现场测试与数值分析
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)