【SQL Server】华中农业大学空间数据库实验报告 实验八 存储过程

1.实验目的

  1. 通过实验课程与理论课的学习深入理解掌握的存储过程的原理、创建、修改、删除、基本的使用方法、主要用途,并且可以在练习的基础上,熟练使用存储过程来进行数据库的应用程序的设计;
  2. 深入学习深刻理解与存储过程相关的T-SQL语句的编写的基本原理、编写方法与常见的编写规范,并通过与数据查询的T-SQL语句进行比较,充分了解其间的差异,从而进一步理解T-SQL语句编写代码的方法。

2.实验内容

  1. 创建并执行存储过程:交互式创建并执行一存储过程、用T-SQL创建一存储过程;
  2. 修改存储过程:交互式修改存储过程Pro_Qsinf、用SQL修改存储过程Pro_Qsinf;
  3. 删除存储过程:交互式删除存储过程Pro_Qsinf、用SQL删除存储过程Pro_Qscore。

3.实验步骤

3.1创建并执行存储过程

1.交互式创建并执行一个存储过程

(1)创建存储过程Pro_Qsinf:通过学生学号来查询学生的姓名、年龄、专业:

1)打开软件,点击【对象资源管理器】--->【数据库】--->【jiaoxuedb】--->【存储过程】--->【新建】:

2)根据题目要求,输入代码如下所示,点击执行,下方出现【命令已完成】表示存储过程新建成功,其编写代码主要为两个部分,基本方法与数据查询中编写代码类似:

(2)执行存储过程Pro_Qsinf,查询并显示默认学号为S1与S4学生的学号、年龄与专业:

新建查询,输入代码如下所示,其代码含义与数据查询的主要区别就在于,查询前需要通过DECLARE语句声明我们需要用到的形参变量,SELECT语句选中我们需要用到的形参,EXEC语句表示执行存储过程,后+存储过程名,PRINT语句后+我们要输出的结果形式;

本题目中比较特殊的为如果要查询显示默认值,无需用到SELECT语句,在EXEC语句后的存储过程的输入值中,将输入值设置为DEFAULT即可:

得到结果如下,符合题目要求与数据库表中的数据:

2.用T-SQL创建一个存储过程

(1)创建存储过程Pro_Qscore:通过学生姓名和课程名查询该生该课程的成绩

新建查询,输入代码如下所示,其代码含义为:上半部分:创建存储过程名,IN与OUT 表示根据什么数据得到什么数据,特别注意++得到的数据后要+OUTPUT++;下半部分:由一个AS连接,其编写的基本思路与数据查询的编写思路相似,需要特别注意的是要++用等式将我们新建的形参与实际表中的参数连接起来++:

(2)执行存储过程Pro_Qscore,查询并显示学生付2的数据结构课程的成绩:

新建查询,输入代码如下,其代码含义与数据查询的主要区别就在于,查询前需要通过DECLARE语句声明我们需要用到的形参变量,SELECT语句选中我们需要用到的形参,EXEC语句表示执行存储过程,后+存储过程名,PRINT语句后+我们要输出的结果形式:

得到结果如下,符合数据库表数据与题目要求,通过此步骤我们也可以发现,利用存储过程得到结果的一个好处就在于我们可以利用PRINT语句自定义我们想要的得到结果的形式:

3.2修改存储过程

1.交互式修改存储过程Pro_Qsinf

点击【对象资源管理器】--->【数据库】--->【jiaoxuedb】--->【存储过程】--->【dbo. Pro_Qsinf】--->【修改】,即可打开存储过程的编辑窗口,在编辑窗口处根据要求修改即可,在保证语法正确的基础上,存储过程名、形参类型、形参大小都是可以修改的部分:

2.用SQL修改存储过程Pro_Qsinf

将存储过程Pro_Qsinf的定义修改为根据学号查询姓名、性别、专业:

新建查询,输入代码如下所示,其代码含义,与其说是修改存储过程,更类似重新编写了一个存储过程,因为其基本的修改思路就是重新编写了一个存储过程,无论其属性需不需要修改,依然需要写在SQL语句中,++其唯一的不同之处就在于上半部分为选中了存储过程Pro_Qsinf++:

3.3删除存储过程

1.交互式删除存储过程Pro_Qsinf

点击【对象资源管理器】--->【数据库】--->【jiaoxuedb】--->【存储过程】--->【dbo. Pro_Qsinf】--->【删除】,即可删除存储过程,交互式方法相当的简单粗暴,也具有无法撤回性,本次实验中就未实际演示,了解即可:

2.用SQL删除存储过程Pro_Qscore

新建查询,输入代码如下所示,T-SQL语句中,DROP语句是非常通用的删除语句,一般的删除数据库、数据库表等都是利用DROP语句:

4.课后习题

1.利用学生姓名查询该生选修的课程名、成绩,以及任课教师姓名:

新建查询,输入代码如下所示,创建一个名为Pro_QSNO的存储过程:

2.利用学生姓名和课程名检索该生该课程的成绩:

新建查询,输入代码如下所示,创建一个名为Pro_S_SC的存储过程:

3.利用课程名查询选修该课程的学生姓名、系别、成绩,并给出"程序设计"课程的该查询信息:

新建查询,输入代码如下所示,创建一个名为PRO_CNAME的存储过程:

新建查询,输入代码如下所示,调用存储过程PRO_CNAME用于查询程序设计这门课程的相关信息:

结果如下图所示,符合数据库数据与题目要求,说明存储过程建立成功且正确:

4.利用教师姓名和课程名检索该教师该任课的课程名、课时数、选课人数、平均成绩、最高成绩,并查询教师"齐1"的"程序设计"课程的情况记录:

新建查询,输入代码如下所示,创建一个名为PRO_TN_CN的存储过程:

新建查询,输入代码如下所示,调用存储过程PRO_TN_CN用于查询教师'齐1'教授的课程'程序设计'的相关信息:

结果如下图所示,符合数据库数据与题目要求,说明存储过程建立成功且正确:

相关推荐
阳光九叶草LXGZXJ4 分钟前
达梦数据库-学习-68-dmasm0X_XXXXXX.log日志激增
linux·运维·数据库·sql·学习
Mortalbreeze9 分钟前
MySQL 基础篇(三):一文掌握 MySQL 常见数据类型
linux·服务器·数据库·mysql
青山木17 分钟前
秒杀系统设计(一):需求拆解与流量治理
java·数据库·redis·后端·架构
lusklusklusk17 分钟前
Oracle数据库基础之8_闪回
数据库·oracle
lusklusklusk34 分钟前
Oracle数据库基础之10_性能优化
数据库·oracle·性能优化
Omics Pro38 分钟前
预测性虚拟细胞中显式机理算子
大数据·数据库·人工智能·python·算法·机器学习·自然语言处理
看浪的路人38 分钟前
第5讲:Prompt 管理与版本追踪
大数据·数据库·elasticsearch
Eloudy41 分钟前
全文 - version.A - AMBA CHI Chip-to-Chip(C2C)
java·开发语言·数据库·gpu·chiplet
笨小孩@GF 知行合一10 小时前
易语言-高级应用
数据库·编程·易语言·中文编程