当前位置: 首页 > news >正文

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

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

相关文章:

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

1.实验目的 通过实验课程与理论课的学习深入理解掌握的存储过程的原理、创建、修改、删除、基本的使用方法、主要用途,并且可以在练习的基础上,熟练使用存储过程来进行数据库的应用程序的设计;深入学习深刻理解与存储过程相关的T-SQL语句的编…...

ArcMap 处理栅格数据的分辨率功能操作

ArcMap 处理栅格数据的分辨率功能操作 一、统一多分辨率栅格数据 1、查看两个栅格数据的分辨率 1)raster1 点击属性 2) raster2 2、统一像元大小 1)点击环境 展示和填写 处理范围 栅格分析 点击确定 3、重采样 让raster1和..2保持一致,即…...

redis7.x源码分析:(4) ae事件处理器(一)

ae模块是redis实现的Reactor模型的封装。它的主要代码实现集中在 ae.c 中,另外还提供了平台相关的io多路复用的封装,它们都实现了一套相同的poll接口,就类似于C中提供了一个接口基类,由针对不同平台的派生类去实现。 // 创建平台…...

【React】React Router:深入理解前端路由的工作原理

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 React Router:深入理解前端路由的工作原理路由的演进历程传统多页面…...

51单片机-独立按键与数码管联动

独立键盘和矩阵键盘检测原理及实现 键盘的分类:编码键盘和非编码键盘 键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如:计算机键盘。靠软件编程识别的称为非编码键盘;在单片机组成…...

visual studio 2005的MFC各种线程函数之间的调用关系

在 Visual Studio 2005 的 MFC 程序中的函数和消息机制涉及线程间通信、消息处理以及与窗口消息的交互。接下来我将详细分析以下每个函数的作用、如何使用它们以及它们之间的调用关系。 1. PostThreadMessage(m_iThOpID, MSG_OP_OVER, 0, (LPARAM)iLparm); 函数用途&#xff1…...

网页中调用系统的EXE文件,如打开QQ

遇到一个实际的问题,需要在网页中打开本地的某个工业软件。 通过点击exe文件就可以调用到程序。 比如双击qq的exe就可以启动qq的程序。 那么问题就变成了如何加载exe程序呢? 可以通过Java的 Process process Runtime.getRuntime().exec(command);通过…...

【单点知识】基于PyTorch讲解自动编码器(Autoencoder)

文章目录 0. 前言1. 自动编码器的基本概念1.1 定义1.2 目标1.3 结构 2. PyTorch实现自动编码器2.1 导入必要的库2.2 定义自动编码器模型2.3 加载数据2.4 训练自动编码器 3. 自动编码器的意义4. 自动编码器的应用4.1 图像处理4.2自然语言处理:4.3推荐系统&#xff1a…...

Halo 正式开源: 使用可穿戴设备进行开源健康追踪

在飞速发展的可穿戴技术领域,我们正处于一个十字路口——市场上充斥着各式时尚、功能丰富的设备,声称能够彻底改变我们对健康和健身的方式。 然而,在这些光鲜的外观和营销宣传背后,隐藏着一个令人担忧的现实:大多数这些…...

summernote富文本批量上传音频,视频等附件

普通项目,HTML的summernote富文本批量上传音频,视频等附件(其他附件同理) JS和CSS的引入 <head><th:block th:include"include :: summernote-css" /> </head> <body><th:block th:include"include :: summernote-js" /> …...

IDEA如何设置编码格式,字符编码,全局编码和项目编码格式

前言 大家好&#xff0c;我是小徐啊。我们在开发Java项目&#xff08;Springboot&#xff09;的时候&#xff0c;一般都是会设置好对应的编码格式的。如果设置的不恰当&#xff0c;容易造成乱码的问题&#xff0c;这是要避免的。今天&#xff0c;小徐就来介绍下我们如何在IDEA…...

【计算机网络实验】之静态路由配置

【计算机网络实验】之静态路由配置 实验题目实验目的实验任务实验设备实验环境实验步骤路由器配置设置静态路由测试路由器之间的连通性配置主机PC的IP测试 实验题目 静态路由协议的配置 实验目的 熟悉路由器工作原理和机制&#xff1b;巩固静态路由理论&#xff1b;设计简单…...

十五届蓝桥杯赛题-c/c++ 大学b组

握手问题 很简单&#xff0c;相互牵手即可&#xff0c;但是要注意&#xff0c;第一个人只能与其他49个人牵手&#xff0c;所以开头是加上49 #include <iostream> using namespace std; int main() {int cnt0;for(int i49;i>7;i--){cnti;//cout<<i<<&quo…...

基础自动化系统的任务

基础自动化系统的任务主要包括实现自动控制、提高生产效率、减少人工干预等。以下是其具体任务的相关介绍&#xff1a; 实现自动控制 控制机器设备&#xff1a;基础自动化系统通过预设的程序和逻辑规则&#xff0c;对机器或设备进行自动控制和运行。执行特定任务&#xff1a;这…...

DBeaver添加地图查看器的自定义底图

DBeaver提供了空间数据在地图上查看的功能&#xff0c;地图查看器技术上基于Leaflet实现。 当我们在表格中选择图形列时&#xff0c;空间数据会叠加在右侧的地图查看器上。 其本质是在缓存中会生成一个静态页面&#xff0c;点击查看器左下角的“在浏览器中打开”&#xff0c;可…...

STM32F103C8T6实时时钟RTC

目录 前言 一、RTC基本硬件结构 二、Unix时间戳 2.1 unix时间戳定义 2.2 时间戳与日历日期时间的转换 2.3 指针函数使用注意事项 ​三、RTC和BKP硬件结构 四、驱动代码解析 前言 STM32F103C8T6外部低速时钟LSE&#xff08;一般为32.768KHz&#xff09;用的引脚是PC14和PC…...

Python Selenium:Web自动化测试与爬虫开发

Python Selenium&#xff1a;Web自动化测试与爬虫开发 Python Selenium&#xff1a;Web自动化测试与爬虫开发安装Selenium设置WebDriver基础示例页面元素交互处理JavaScript和Cookies浏览器控制屏幕截图Headless Mode结束会话错误处理与调试 ***本文由AI辅助生成*** Python Se…...

Java-07 深入浅出 MyBatis - 一对多模型 SqlMapConfig 与 Mapper 详细讲解测试

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 大数据篇正在更新&#xff01;https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了&#xff1a; MyBatis&#xff…...

用CAXA CAD电子图板导入图框、标题栏并导出pdf的方法

1.导入图框&#xff1a; 点击调入图框->出现读入图框文件 一个一个点击&#xff0c;选择合适的图框 然后点击导入 2.导入标题栏&#xff1a; 调入标题栏->出现读入标题栏文件 一个一个点击&#xff0c;选择合适的标题栏&#xff0c;然后点击导入 3.导出pdf&#x…...

深入了解 Linux htop 命令:功能、用法与示例

文章目录 深入了解 Linux htop 命令&#xff1a;功能、用法与示例什么是 htop&#xff1f;htop 的安装htop的基本功能A区&#xff1a;系统资源使用情况B区&#xff1a;系统概览信息C区&#xff1a;进程列表D区&#xff1a;功能键快捷方式 与 top 的对比常见用法与示例实际场景应…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...