实验五 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 小时前
linux-僵死进程处理
linux·运维·服务器
HackTwoHub9 小时前
AI大模型网关存在SQL注入、附 POC 复现、影响版本LiteLLM 1.81.16~1.83.7(CVE-2026-42208)
数据库·人工智能·sql·网络安全·系统安全·网络攻击模型·安全架构
l1t9 小时前
DeepSeek总结的DuckLake构建基于 SQL 原生表格式的下一代数据湖仓
数据库·sql
KmSH8umpK9 小时前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第八篇
数据库·redis·分布式
其实防守也摸鱼9 小时前
CTF密码学综合教学指南--第五章
开发语言·网络·笔记·python·安全·网络安全·密码学
网络工程小王9 小时前
【LangChain 大模型6大调用指南】调用大模型篇
linux·运维·服务器·人工智能·学习
TDengine (老段)9 小时前
从施工监测到运营预警,桥科院用 TDengine 提升桥梁数据管理能力
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
wangbing11259 小时前
各linux版本的包管理命令
linux·运维·服务器
S1998_1997111609•X10 小时前
论mysql国盾shell-sfa犯罪行为集团下的分项工程及反向注入原理尐深度纳米算法下的鐌檵鄐鉎行为
网络·数据库·网络协议·百度·开闭原则
比昨天多敲两行11 小时前
Linux基础开发工具(下)
linux·运维·服务器