实验8:游标和存储过程

【实验目的】

1、了解游标、存储过程的作用

2、熟悉游标和存储过程的特点

3、掌握游标的使用步骤和存储过程的创建和管理

实验设备及器材

1、硬件:PC机;

2、软件:(1)Windows7; (2)Microsoft SQL Server 2012

【主要内容】

游标的使用步骤;当前游标集的修改;存储过程的创建和管理。

实验内容及要求/【实验步骤及结果】

下面所有的操作在“学生管理数据库”中进行。(附加数据库,T-SQL语句)

一、存储过程操作

1.设计简单存储过程AVG_GRADE,求出计算机原理这门课程的平均成绩;并执行验证。

USE 学生管理数据库

GO

CREATE PROCEDURE AVG_GRADE

AS

SELECT 成绩信息表.课程号,Round (AVG(成绩信息表.成绩),1) 

AS '平均成绩'

FROM 学生信息表 join 成绩信息表 ON 学生信息表.学号=成绩信息表.学号 join 课程信息表 ON 课程信息表.课程号=成绩信息表.课程号 and 课程信息表.课程名='计算机原理'

GROUP BY  成绩信息表.课程号

EXEC  AVG_GRADE

2.设计存储过程S_C_SC,求出某课程的考试学生姓名和成绩;并执行验证。(请注意:请考虑是否已经存在该存储过程的情况,如果已有该存储过程,请先删除,再创建)

USE 学生管理数据库

GO

IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE NAME='S_C_SC' AND TYPE='P')

  DROP PROCEDURE S_C_SC

GO

CREATE PROCEDURE S_C_SC

  @course varchar(50)

AS

  SELECT 课程信息表.课程名,学生信息表.姓名,成绩信息表.成绩

  FROM 学生信息表 JOIN 成绩信息表  ON 学生信息表.学号=成绩信息表.学号

       JOIN 课程信息表  ON 成绩信息表.课程号=课程信息表.课程号 AND 课程名=@course

GO

EXEC S_C_SC '计算机原理'

  1. 修改2建立的存储过程,求出某课程的考试人数和平均分;并执行验证。

USE 学生管理数据库

GO

ALTER PROCEDURE S_C_SC

  @course varchar(50)

AS

  SELECT AVG(成绩信息表.成绩) AS 平均分,COUNT( @course) AS 人数

  FROM 课程信息表  JOIN 成绩信息表  ON 课程信息表.课程号=成绩信息表.课程号 AND 课程名=@course

GO

EXEC S_C_SC '计算机原理'

4.建立存储过程SNAME_S,查询出所有姓名中有军字的同学的学号、姓名、性别和专业;并执行验证。

USE 学生管理数据库

GO

CREATE PROCEDURE SNAME_S

@course varchar(50)

AS

  SELECT 学生信息表.学号,学生信息表.姓名,学生信息表.性别,学生信息表.专业

  FROM 学生信息表

  WHERE 学生信息表.姓名 like @course

GO 

EXEC SNAME_S '%军%';

5.建立存储过程I_II,利用输出参数计算阶乘;并执行验证。

USE 学生管理数据库

GO

CREATE PROCEDURE I_II

  @SUM_I INT,

  @SUM_II FLOAT OUTPUT

AS

  DECLARE @X int,@Y float

  SET @X=1

  SET @Y=1

  WHILE @X<=@SUM_I

  BEGIN

    SET @Y=@Y*@X

    SET @X=@X+1

  END

  SET  @SUM_II=@Y

GO

DECLARE @OUTPUT FLOAT

EXEC I_II 5,@OUTPUT OUTPUT

PRINT STR(@OUTPUT)

二、游标操作

1.使用游标逐行提取学生信息表的记录。

USE 学生管理数据库

GO

DECLARE SUM_I CURSOR

FOR 

  SELECT * FROM 学生信息表

OPEN SUM_I

FETCH NEXT FROM SUM_I

WHILE @@FETCH_STATUS=0

    FETCH NEXT FROM SUM_I

CLOSE SUM_I

DEALLOCATE SUM_I

  1. 使用游标更改学生信息表的第2行的姓名,姓名随意改;并查询表验证。

USE 学生管理数据库

GO

DECLARE SUM_I SCROLL CURSOR

FOR 

  SELECT * FROM 学生信息表

OPEN SUM_I

FETCH ABSOLUTE 2 FROM SUM_I

UPDATE 学生信息表

SET 姓名='刘雄狄'

WHERE CURRENT OF SUM_I

CLOSE SUM_I

DEALLOCATE SUM_I

GO

SELECT * FROM 学生信息表

3. 创建一个课程信息表的临时表,删除该表的第3行记录;并查询表验证。

USE 学生管理数据库

GO

IF OBJECT_ID('tempdb..#课程临时表') is not null 

  DROP TABLE #课程临时表

SELECT * INTO #课程临时表 FROM 课程信息表

SELECT * FROM #课程临时表

SELECT * FROM 课程信息表

GO

DECLARE SUM_I INSENSITIVE SCROLL CURSOR

FOR 

  SELECT 课程号 FROM 课程信息表

OPEN SUM_I

FETCH ABSOLUTE 3 FROM SUM_I

DECLARE @course varchar(50)

FETCH ABSOLUTE 3 FROM SUM_I INTO @course

PRINT @course

DELETE FROM #课程临时表

WHERE 课程号=@course

CLOSE SUM_I

DEALLOCATE SUM_I

GO

SELECT * FROM #课程临时表

SELECT * FROM 课程信息表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/240020.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

小tips: 如何画简单的correlation图并调整图距

记录简单的画correlation代码。初衷是每次都需要找这个边距到底是哪个代码&#xff0c;特此记录。 目的&#xff1a;我们有一组需要添加的r和pvalue&#xff0c;然后我们想把它加到图里然后并且调整图的边距。 测试数据构建以及r和p给定以及对其进行四舍五入规定小数点以及科…

web应用体系以及windows网络常见操作应用

本课程目标 1.Dos命令(必须掌握) 2.网络体系(笔试选择填空题) 3.搭建windows测试环境 一、Dos窗口启动 启动方式1.进入DOS页面:win+R,键入cmd 启动方式2.开始-运行--输入cmd-回车,此时将出现一个显示命令提示符的窗口,如下图 常见的Dos命令: 1、cd cd \ …

Ubuntu20.04降低linux版本到5.4.0-26-generic

前言 试用ubuntu20.04安装昇腾的驱动和cann的时&#xff0c;出现如下问题&#xff1a; (base) rootubuntu:/home/work# ./Ascend-hdk-910-npu-driver_23.0.rc3_linux-aarch64.run --full Verifying archive integrity... 100% SHA256 checksums are OK. All good. Uncompr…

【Java 进阶篇】Jedis 操作 Hash:Redis中的散列类型

在Redis中&#xff0c;Hash是一种存储键值对的数据结构&#xff0c;它适用于存储对象的多个属性。Jedis作为Java开发者与Redis交互的工具&#xff0c;提供了丰富的API来操作Hash类型。本文将深入介绍Jedis如何操作Redis中的Hash类型数据&#xff0c;通过生动的代码示例和详细的…

Unity中实现ShaderToy卡通火(总结篇)

文章目录 前言一、把卡通火修改为后处理效果1、在Shader属性面板定义属性接收帧缓存纹理2、在片元着色器对其纹理采样后&#xff0c;与卡通火相加输出请添加图片描述 二、我们自定义卡通火1、修改 _CUTOFF 使卡通火显示在屏幕两侧2、使火附近屏幕偏红色 前言 在之前的文章中&a…

高通SDX12:nand flash适配

一、SBL阶段 代码流程如下: boot_images\core\storage\flash\src\dal\flash_nand_init.c nand_probe ->nand_intialize_primary_hal_device ->>nand_get_device_list_supportedboot_images\core\storage\flash\src\dal\flash_nand_config.c ->>>flash_n…

【热】如何实现el-table列宽随内容长度自适应最小宽度

非常火急火燎的来写这篇博客&#xff01;&#xff01;因为自己一开始想实现这个效果时在网上查了很久查了很多资料和博客都没有找到能有效达到效果的方法&#xff0c;要么就是别人说有效但是我这里会报错而且难以解决。最后终于被我自己给摸索出来了&#xff01; 应用场景 很…

案例044:基于微信小程序的消防隐患在线举报系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

万界星空科技电子装配行业MES解决方案

电子电器装配属于劳动密集型、科技含量较高的行业&#xff0c;产品零部件种类繁多&#xff0c;生产组装困难&#xff0c;生产过程存在盲点&#xff0c;同时也决定了生产流水线多且对自动化水平要求较高。 万界星空科技提供的电子行业MES解决方案&#xff0c;提供从仓储管理、生…

element日历组件只显示月和日,把年份隐藏掉

最终效果&#xff1a; 把年份和旁边的两个小标志小标去掉&#xff0c; 也就是把这红色框框内的内容隐藏掉 我们先用控制台看看里面具体的样式 1、可以看到 class “el-date-picker__header” 的 div是控制日历组件的标题的&#xff0c;div里面的button和span就是对应标题里面…

C++的移动语义和完美转发

参考《现代C语言核心特性解析》 移动语义 C11新特性的std::move()用于将一个左值转换为右值引用。它并不是实际移动或复制数据&#xff0c;而是通过将一个左值强制转换为一个右值引用来实现对对象的转移。这个特性在C11中引入&#xff0c;用于优化对象移动操作的效率。 我们…

Labelme2Yolo labelme格式的json标注转yolo格式txt

该工作适用于目标检测工作。 由于labelme标注出的文件是如下图的单个json文件格式&#xff0c;不符合yolo的训练格式&#xff0c;需要转格式。 观察发现labelme标注的json文件中有imageData&#xff0c;还挺大的&#xff0c;查阅后得知是base64后的图片数据&#xff0c;也就是…

网易有道强力开源中英双语语音克隆

项目地址&#xff08;基于PromptTTS&#xff09;&#xff1a; https://github.com/netease-youdao/EmotiVoice EmotiVoice Docker镜像 尝试EmotiVoice最简单的方法是运行docker镜像。你需要一台带有NVidia GPU的机器。先按照Linux和Windows WSL2平台的说明安装NVidia容器工具…

Linux——基本指令(二)

​ 个人主页&#xff1a;日刷百题 系列专栏&#xff1a;〖C语言小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 &#x1f30e;欢迎各位→点赞&#x1f44d;收藏⭐️留言&#x1f4dd; ​ ​ 写在前面&#xff1a; 紧接上一章&#xff0c;我们在理解接下来的命令之前&#xff0c…

收款码在线生成系统源码/开源layui前端框架/附多套前端UI模板/三合一收款码生成系统源码

源码简介&#xff1a; 收款码在线生成系统源码&#xff0c;它是采用开源layui前端框架&#xff0c;并且它附多套前端UI模板&#xff0c;作为三合一收款码生成系统源码&#xff0c;界面简洁大方。 Layui前端的多合一收款码在线生成系统源码&#xff0c;附带了多套精美的前端UI…

mac 环境下 goframe安装GF开发工具 gf-cli(安装包方式安装)

mac 环境下 goframe安装GF开发工具 gf-cli&#xff08;安装包方式安装&#xff09; 安装包网址 链接: link 终端输入命令进行安装 ./gf_darwin_amd64 但是产生如下报错&#xff0c;无法安装 使用一下命令给安装权限 chmod 0777 gf_darwin_amd64 && ./gf_darwin_a…

巧妙的使用WPF中的资源

其实&#xff0c;在wpf中&#xff0c;最核心的就是xaml&#xff0c;因为只有xaml&#xff0c;才能体现出用的是wpf&#xff0c;而不是普通的cs文件&#xff0c;cs文件在winform中等等程序都可以使用的&#xff0c;唯独xaml才是wpf中最重要的&#xff0c;最精华的东西&#xff0…

【JVM入门到实战】(三) 查看字节码文件的工具

一、 javap -v命令 javap是JDK自带的反编译工具&#xff0c;可以通过控制台查看字节码文件的内容。适合在服务器上查看字节码文件内容。直接输入javap查看所有参数。输入javap -v 字节码文件名称 查看具体的字节码信息。&#xff08;如果jar包需要先使用 jar –xvf 命令解压&a…

c语言 词法分析器 《编译原理》课程设计

设计、编制并调试一个词法分析程序&#xff0c;加深对词法分析原理的理解。 针对表达各类词语的一组正规表达式&#xff0c;设计一个确定化的最简的有限自动机&#xff0c;对输入的符号串进行单词划分及词类识别。 要求词法分析器的输入是字符串&#xff0c;输出是源程序中各…

9:00面试,9:06就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到12月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40…