实验五 PLSQL编程

🕺作者: 主页

我的专栏
C语言从0到1
探秘C++
数据结构从0到1
探秘Linux

😘欢迎关注:👍点赞🙌收藏✍️留言

🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!!

文章目录

实验五 PL/SQL编程

【实验目的】

  1. 熟悉PL/SQL的数据类型和书写规则
  2. 熟悉控制结构和游标的使用
  3. 编写和运行函数、过程和触发器

【实验内容】

编写脚本文件,调试运行脚本文件,并记录结果。

一、本地子程序的编写及调试

  1. 编写一个PL/SQL块,功能用于打印学生信息。整个程序的具体要求如下:
  • 在DECLARE部分完成:
    1. 自定义学生信息记录类型stu_record_type,包括学号,姓名,性别,籍贯,学习成绩和活动成绩。每个元素均为可变长字符类型
  1. 定义学生信息记录变量stu_record
  1. 编写带一个形参的本地过程:学生信息打印过程PrintStuRecord(x stu_record_type),把形参x定义为(1)中记录类型。这个过程的代码用于实现将形参x的每个元素打印输出(提示:用dbms_output.put_line过程)。
  • 在BEGIN...END部分完成:
    1. 为stu_record变量的各个元素赋值如下:
sql 复制代码
学号:'2001001'
姓名:'李新'				
性别:'m'		
籍贯:'黑龙江省哈尔滨市'
学习成绩:'Excellent'			
活动成绩:'Good'
  1. 调用本地过程,用stu_record变量作为实参
  1. 运行这个PL/SQL程序,查看并记录运行结果

注:本地子程序只在块内使用,不能存在共享缓冲区中,要多次使用需要多次编译

二、函数的编写及调试

  1. 编写一个函数f_pjgz,有一个数值型参数v_deptno,根据函数调用时输入部门号,来查询scott用户下emp表中该部门所有员工的平均工资,这个平均工资作为函数的返回值。
    1. 登录scott用户
  1. 编写程序
  1. 创建函数
  1. 用select语句调用该函数,用来查询部门号为10的员工平均工资

三、触发器程序的编写及调试

  1. 建立对bookinfo表的DML触发器,一旦bookinfo表发生了任何变化,立即触发,对bookinfo表的数据进行统计,结果存储在数据统计表中
    1. 如果没有则建立bookinfo表,选择建立在scott用户下,表结构为
sql 复制代码
(
  bookno  varchar2(36) Primary key,
  bookname  varchar2(40) not null,
  authorname  varchar2(10) not null,
  publishtime  date,
  bookprice  float
)
  1. 建立数据统计表major_stats,包含两个字段:书的总数和作者的总数
  1. 向其中插入数据
  1. 创建触发器UpdateMajorStats,完成在bookinfo表中插入、删除和修改记录之后,对bookinfo表进行统计,结果存储在(2)建立的major_stats表中
  • 编写触发器程序
  • 创建触发器
  1. 在bookinfo表中分别进行插入、删除和更新操作,每种操作执行后再查看bookinfo表和major_stats表中数据的变化
    1. 插入


  1. 删除
  1. 修改

这里我没有再修改了,其实修改作者名才是更好的选择,因为可以引起major_stats的变化

【实验总结】

一、本地子程序的编写及调试:

在本地子程序的部分,我们成功地完成了以下任务:

  1. 定义了学生信息记录类型stu_record_type,包括学号,姓名,性别,籍贯,学习成绩和活动成绩。
  2. 定义了学生信息记录变量stu_record。
  3. 编写了带一个形参的本地过程PrintStuRecord,用于打印学生信息。

在BEGIN...END部分,我们完成了以下任务:

  1. 为stu_record变量的各个元素赋值。
  2. 调用了本地过程,将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的数据类型和书写规则,掌握编写和运行函数、过程和触发器的目的。

相关推荐
今晚务必早点睡6 小时前
微服务改数据库密码后服务仍能访问?一次“看似异常、实则常见”的生产现象全解析
数据库·微服务·oracle
老师我太想进步了20267 小时前
cmd连接MySQL及相关查询
数据库·mysql
yuanmenghao8 小时前
车载Linux 系统问题定位方法论与实战系列 - 车载 Linux 平台问题定位规范
linux·运维·服务器·网络·c++
weixin_516023079 小时前
linux下fcitx5拼音的安装
linux·运维·服务器
難釋懷10 小时前
Redis命令-Set命令
数据库·redis·缓存
hunter145010 小时前
Linux 进程与计划任务
linux·运维·服务器
上海云盾安全满满10 小时前
高防IP线路质量重要吗
网络·网络协议·tcp/ip
Linux-palpitate10 小时前
PostgreSQL(PG)的1主2从集群部署安装
数据库·postgresql
楼田莉子10 小时前
Linux学习之磁盘与Ext系列文件
linux·运维·服务器·c语言·学习
陌上花开缓缓归以10 小时前
linux 怎么模拟系统panic重启
linux·运维·服务器