【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'教授的课程'程序设计'的相关信息:

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

相关推荐
东阳马生架构2 分钟前
MySQL原理简介—9.MySQL索引原理
mysql
jlting1956 分钟前
《Linux中软件的两种安装方式》详细步骤
大数据·mysql
蚂蚁在飞-13 分钟前
一个高度可扩展的 Golang ORM 库【GORM】
数据库·oracle·golang
hai4058716 分钟前
Spring Boot整合Redis Stack构建本地向量数据库相似性查询
数据库·spring boot·redis
fa_lsyk29 分钟前
mysql window安装(学习使用)
学习·mysql·adb
hummhumm1 小时前
第33章 - Go语言 云原生开发
java·开发语言·后端·python·sql·云原生·golang
代码小鑫1 小时前
A046-基于SpringBoot的论坛系统的设计与实现
java·开发语言·数据库·spring boot·毕业设计
King.6241 小时前
sql工具!好用!爱用!
大数据·数据库·人工智能·sql·学习
寻找沙漠的人2 小时前
MySQL 索引·事务
数据库·mysql
wenyue11212 小时前
云原生开发框架
数据库·云原生