当前位置: 首页 > 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 的对比常见用法与示例实际场景应…...

哈尔滨工业大学学位论文latex模板下载及编译方法

1、下载文件夹chinese&#xff1a;https://download.csdn.net/download/wzz110011/92774930?spm1011.2124.3001.6210 2、安装TexStudio 3、设置TexStuidio编译器为XeLaTex&#xff0c;具体设置方法可百度...

QQ空间时光胶囊:用GetQzonehistory打造你的数字记忆保险箱

QQ空间时光胶囊&#xff1a;用GetQzonehistory打造你的数字记忆保险箱 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 当我们在社交平台上记录生活点滴时&#xff0c;可曾想过这些数字足…...

EcomGPT开源大模型部署:从单机Web到Docker Swarm集群扩展方案

EcomGPT开源大模型部署&#xff1a;从单机Web到Docker Swarm集群扩展方案 1. 引言 如果你在电商行业工作&#xff0c;每天面对海量的商品信息&#xff0c;是不是经常被这些事搞得头大&#xff1a;给几百个商品写标题、从冗长的描述里手动提取关键参数、或者为不同市场的商品做…...

到底要不要用AI写代码?别争了

其实我一直觉得&#xff0c;现在大家讨论 AI 写代码这件事&#xff0c;有点熟悉。因为以前我们也是这么过来的。刚开始写代码那会儿&#xff0c; 不会就打开 百度&#xff0c; 一行一行找答案&#xff0c;复制、试错、再改。一个分号错了能找半天&#xff0c; 中英文标点混了直…...

【限时开源】我们刚在GitHub归档的Python MCP生产模板——含自动证书轮换、配置热重载、灰度指令通道(仅开放72小时)

第一章&#xff1a;Python MCP服务器开发模板概览与核心设计哲学Python MCP&#xff08;Model-Controller-Protocol&#xff09;服务器开发模板是一个面向协议驱动、可插拔架构的轻量级服务框架&#xff0c;专为构建高内聚、低耦合的远程控制与设备交互服务而设计。它并非传统W…...

研究神器组合:Claude Code + NotebookLM + Obsidian

Claude Code NotebookLM Obsidian&#xff1a;研究神器组合导语本文介绍如何用 Claude Code skill 把 NotebookLM 里的内容全部导出到 Obsidian&#xff0c;生成可跳转的知识图谱。核心价值在于&#xff1a;只需三条终端命令&#xff0c;就能把 20 个 YouTube 视频变成带引用…...

AI 写作 + 去 AI 味:自媒体人高效涨粉密码

AI 写作 去 AI 味&#xff0c;自媒体人高效涨粉的新组合拳副标题&#xff0c;内容洪流时代&#xff0c;创作者如何同时兼顾效率、风格与平台合规&#xff1f;凌晨两点&#xff0c;北京东四环的一间合租公寓里&#xff0c;一位运营着 3 个帐号的图文博主&#xff0c;一边看着后…...

忍者像素绘卷参数详解:CFG值对‘火之意志’风格权重响应敏感度测试

忍者像素绘卷参数详解&#xff1a;CFG值对火之意志风格权重响应敏感度测试 1. 引言&#xff1a;像素艺术与AI的完美融合 忍者像素绘卷是一款基于Z-Image-Turbo深度优化的图像生成工具&#xff0c;它将传统忍者文化与16-Bit复古游戏美学相结合&#xff0c;创造出独特的视觉体验…...

京东 SPU/SKU 数据接口全解读:商品详情 API 文档(2026 最新版)

京东商品详情 API 体系以SPU&#xff08;标准产品单元&#xff09;聚合、SKU&#xff08;库存单元&#xff09;明细为核心设计&#xff0c;覆盖商家开放平台&#xff08;JOS&#xff09;、京东联盟两大核心场景&#xff0c;支持单品 / 批量查询、全字段 / 指定字段返回&#xf…...

OpenClaw压力测试:Qwen3-14B持续运行24小时稳定性报告

OpenClaw压力测试&#xff1a;Qwen3-14B持续运行24小时稳定性报告 1. 测试背景与目标 上周在尝试用OpenClaw自动处理一批PDF文档时&#xff0c;遇到了一个奇怪的现象&#xff1a;连续运行4小时后&#xff0c;系统响应速度明显下降&#xff0c;甚至出现了几次任务中断。这让我…...