实验五 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的数据类型和书写规则,掌握编写和运行函数、过程和触发器的目的。

相关推荐
新法国菜1 小时前
MySql知识梳理之DML语句
数据库·mysql
老华带你飞1 小时前
校园交友|基于SprinBoot+vue的校园交友网站(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·校园交友网站
许泽宇的技术分享1 小时前
Text2API与Text2SQL深度对比:自然语言驱动的数据交互革命
数据库·windows·microsoft
p@nd@2 小时前
【SQL优化案例】SQL改写 - 用 UNION ALL 替代 OR
oracle·性能调优·sql优化·oracle优化
青草地溪水旁2 小时前
服务发现实例和服务实例是不同的
服务器·服务发现·服务实例
于冬恋4 小时前
RabbitMQ高级
服务器·网络·rabbitmq
两张不够花4 小时前
Shell脚本源码安装Redis、MySQL、Mongodb、PostgreSQL(无报错版)
linux·数据库·redis·mysql·mongodb·postgresql·云计算
Java 码农4 小时前
nodejs 集成mongodb实现增删改查
数据库·mongodb
算力魔方AIPC5 小时前
如何用算力魔方4060安装PaddleOCR MCP 服务器
运维·服务器
tan77º5 小时前
【Linux网络编程】分布式Json-RPC框架 - 项目设计
linux·服务器·网络·分布式·网络协议·rpc·json