😘欢迎关注:👍点赞🙌收藏✍️留言
🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!!
实验五 PL/SQL编程
【实验目的】
- 熟悉PL/SQL的数据类型和书写规则
- 熟悉控制结构和游标的使用
- 编写和运行函数、过程和触发器
【实验内容】
编写脚本文件,调试运行脚本文件,并记录结果。
一、本地子程序的编写及调试
- 编写一个PL/SQL块,功能用于打印学生信息。整个程序的具体要求如下:
- 在DECLARE部分完成:
- 自定义学生信息记录类型stu_record_type,包括学号,姓名,性别,籍贯,学习成绩和活动成绩。每个元素均为可变长字符类型
- 定义学生信息记录变量stu_record
- 编写带一个形参的本地过程:学生信息打印过程PrintStuRecord(x stu_record_type),把形参x定义为(1)中记录类型。这个过程的代码用于实现将形参x的每个元素打印输出(提示:用dbms_output.put_line过程)。
- 在BEGIN…END部分完成:
- 为stu_record变量的各个元素赋值如下:
学号:‘2001001’ 姓名:’李新’ 性别:‘m’ 籍贯:‘黑龙江省哈尔滨市’ 学习成绩:‘Excellent’ 活动成绩:‘Good’
- 调用本地过程,用stu_record变量作为实参
- 运行这个PL/SQL程序,查看并记录运行结果
注:本地子程序只在块内使用,不能存在共享缓冲区中,要多次使用需要多次编译
二、函数的编写及调试
- 编写一个函数f_pjgz,有一个数值型参数v_deptno,根据函数调用时输入部门号,来查询scott用户下emp表中该部门所有员工的平均工资,这个平均工资作为函数的返回值。
- 登录scott用户
- 编写程序
- 创建函数
- 用select语句调用该函数,用来查询部门号为10的员工平均工资
三、触发器程序的编写及调试
- 建立对bookinfo表的DML触发器,一旦bookinfo表发生了任何变化,立即触发,对bookinfo表的数据进行统计,结果存储在数据统计表中
- 如果没有则建立bookinfo表,选择建立在scott用户下,表结构为
( bookno varchar2(36) Primary key, bookname varchar2(40) not null, authorname varchar2(10) not null, publishtime date, bookprice float )
- 建立数据统计表major_stats,包含两个字段:书的总数和作者的总数
- 向其中插入数据
- 创建触发器UpdateMajorStats,完成在bookinfo表中插入、删除和修改记录之后,对bookinfo表进行统计,结果存储在(2)建立的major_stats表中
- 编写触发器程序
- 创建触发器
- 在bookinfo表中分别进行插入、删除和更新操作,每种操作执行后再查看bookinfo表和major_stats表中数据的变化
- 插入
- 删除
- 修改
这里我没有再修改了,其实修改作者名才是更好的选择,因为可以引起major_stats的变化
【实验总结】
一、本地子程序的编写及调试:
在本地子程序的部分,我们成功地完成了以下任务:
- 定义了学生信息记录类型stu_record_type,包括学号,姓名,性别,籍贯,学习成绩和活动成绩。
- 定义了学生信息记录变量stu_record。
- 编写了带一个形参的本地过程PrintStuRecord,用于打印学生信息。
在BEGIN…END部分,我们完成了以下任务:
- 为stu_record变量的各个元素赋值。
- 调用了本地过程,将stu_record变量作为实参传入。
成功运行这个PL/SQL程序后,我们查看并记录了运行结果。通过这个实验,我们熟悉了PL/SQL的数据类型和书写规则,以及掌握了本地子程序的编写和调试方法。
二、函数的编写及调试:
我们编写了一个名为f_pjgz的函数,它接收一个部门号作为参数,并根据输入的部门号查询scott用户下emp表中该部门所有员工的平均工资,然后返回这个平均工资作为函数的返回值。我们成功地创建了这个函数,并使用select语句调用了该函数来查询部门号为10的员工平均工资。
通过这个实验,我们熟悉了函数的编写和调试方法,并掌握了如何在PL/SQL中创建函数以及如何使用函数进行数据查询和处理。
三、触发器程序的编写及调试:
我们首先建立了bookinfo表和数据统计表major_stats,并向major_stats表中插入了数据。然后,我们编写了触发器UpdateMajorStats,用于在bookinfo表中插入、删除和修改记录之后,对bookinfo表进行统计,结果存储在major_stats表中。
在实验的最后阶段,我们分别进行了对bookinfo表的插入、删除和更新操作,每次操作执行后都查看了bookinfo表和major_stats表中数据的变化。通过这个实验,我们熟悉了触发器程序的编写和调试方法,以及掌握了在PL/SQL中创建触发器来实现特定功能的步骤和技巧。
总的来说,通过这次实验,我们达到了熟悉PL/SQL的数据类型和书写规则,掌握编写和运行函数、过程和触发器的目的。