实验七: 存储过程
实验内容与完成情况(记录所有的实验过程): 1、对学生课程数据库,编写并执行三个存储过程,分别完成下面功能: (1)统计某一门课的成绩分布情况,即用户输入某一门课程的名称,就可统计出该课程各分数段分布的人数。还要求写出执行存储过程的语句和执行结果。 (答题参考:1. 先建立一个表Rank用来存放存储过程执行后的结果,其中第一列division显示成绩分段划分,第二列sub_sum显示的是成绩在该分数段的学生人数。2. 存储过程带有一个字符型参数@name,用于接受,即用户输入某一门课程的名称,就可统计出该课程各分数段分布的人数。还要求写出执行存储过程的语句和执行结果。用户输入课程名称,便于统计不同课程的分数分布情况。3. 程序中应该判断是否存在用户输入的课程名称,如果不存在要向用户提示:'输入错误,没有该课程!'。建议利用@@ROWCOUNT来判断。) CREATE TABLE Rank( division CHAR(20), sub_sum INT);) select * from rank --存储过程执行完后,rank表中存放的就是这门课程的成绩分布情况 division sub_sum -------------------- ----------- [0,60) 0 [60,70) 0 [70,80) 0 [80,90) 1 [90,100] 1 CREATE TABLE Rank( division char(20), sub_sum int ); INSERT INTO Rank(division) VALUES('[0,60)'),('[60,70)'),('[70,80)'),('[80,90)'),('[90,100]'); GO CREATE PROCEDURE printcourse @pcname char(20) AS DECLARE @pcno char(20),@pcount int UPDATE Course SET Cname=@pcname WHERE Cname=@pcname IF(@@ROWCOUNT=0) BEGIN RAISERROR('您输入的课程号不存在,请重新输入!', 16, 1) RETURN END SELECT @pcno=SC.cno FROM Course,SC WHERE Course.Cno=SC.Cno AND Course.Cname=@pcname SELECT @pcount=COUNT(*) FROM SC WHERE Grade<60 AND Cno=@pcno UPDATE Rank SET sub_sum=@pcount WHERE division='[0,60)' SELECT @pcount=COUNT(*) FROM SC WHERE Grade>=60 AND Grade<70 AND Cno=@pcno UPDATE Rank SET sub_sum=@pcount WHERE division='[60,70)' SELECT @pcount=COUNT(*) FROM SC WHERE Grade>=70 AND Grade<80 AND Cno=@pcno UPDATE Rank SET sub_sum=@pcount WHERE division='[70,80)' SELECT @pcount=COUNT(*) FROM SC WHERE Grade>=80 AND Grade<90 AND Cno=@pcno UPDATE Rank SET sub_sum=@pcount WHERE division='[80,90)' SELECT @pcount=COUNT(*) FROM SC WHERE Grade>=90 AND Grade<=100 AND Cno=@pcno UPDATE Rank SET sub_sum=@pcount WHERE division='[90,100]' EXEC printcourse '数据库' SELECT * FROM Rank (2)统计某一门课的平均成绩。(建议:存储过程可带有一个字符型参数值,接受用户输入的课程名称,一个输出参数[用output声明]用于存放返回给调用者的这门课程的平均成绩)。还要求写出执行存储过程的语句和执行结果。 执行结果形为: 数学课的平均成绩为:82.0 CREATE PROCEDURE printavg_course @pcname char(20),@pavg int output AS DECLARE @pcno char(20) UPDATE Course SET Cname=@pcname WHERE Cname=@pcname IF(@@ROWCOUNT=0) BEGIN RAISERROR('您输入的课程号不存在,请重新输入!', 16, 1) RETURN END SELECT @pcno=SC.cno FROM Course,SC WHERE Course.Cno=SC.Cno AND Course.Cname=@pcname SELECT @pavg=AVG(SC.Grade) FROM SC WHERE Cno=@pcno PRINT RTrim(@pcname)+'的平均成绩为:'+CAST(@pavg AS char(5)) GO DECLARE @pavg int EXEC printavg_course '数据库',@pavg output (3)附加题:将学生选课成绩从百分制改为等级制(即A、B、C、D、E五级)。 执行结果形如: sno cno Grade Classified grade --------- ---- ---------------- ---------- 200215121 4 成绩为空! NULL 200215121 6 成绩为空! NULL 200215121 7 成绩为空! NULL 200215122 5 成绩为空! NULL 200215125 1 成绩为空! NULL 200215126 6 不及格 55 200215122 2 良 80 200215121 2 良 85 200215121 3 良 88 200215121 1 优 92 200215122 1 优 92 (11 行受影响) CREATE PROCEDURE printclass_grade AS SELECT Sno,Cno,Grade, CASE WHEN Grade<60 THEN '不及格' WHEN Grade>=60 AND Grade<70 THEN '及格' WHEN Grade>=70 AND Grade<80 THEN '中' WHEN Grade>=80 AND Grade<90 THEN '良' WHEN Grade>=90 AND Grade<=100 THEN '优' ELSE '成绩为空!' END AS 'Grade Classified' FROM SC EXEC printclass_grade 2、对SPJ数据库,创建一个存储过程ins_s_count,功能为根据提供的供应商号,供应商名,供应商所在地等信息,往S表中插入数据,并返回插入该记录之后,S表中的记录数。调用该存储过程实现往S表中插入一条记录(‘S6’,’天盛’,‘福州’),并显示插入该记录之后,S表中的记录数。 CREATE PROCEDURE ins_s_count @psno char(20),@psname char(20),@pstatus int,@pcity char(20) AS DECLARE @pcount int INSERT INTO S(SNO,SNAME,STATUS,CITY) VALUES(@psno,@psname,@pstatus,@pcity) SELECT @pcount=COUNT(*) FROM S PRINT 'S表中的记录数:'+CAST(@pcount AS char(5)) EXEC ins_s_count 'S6','天盛',35,'福州' 3、查看存储过程的定义和内容 (1)定义 存储过程(Stored Procedure) 是存储在服务器上的 Transact-SQL 语句的命名集合 是封装重复性任务的方法 支持用户声明变量、条件执行以及其他强有力的编程特性 (2)内容 存储过程与其他编程语言中的过程类似,它可以 包含执行数据库操作(包括调用其他过程)的编程语句 接受输入参数 向调用过程或批处理返回状态值,以表明成功或失败(以及失败原因) 以输出参数的形式将多个值返回至调用过程或批处理 |
实验七: 存储过程相关推荐
- 数据库实验 实验七 存储过程与触发器
注:此内容仅仅只是记录成长与分享学习,不能保证绝对正确 实验七 存储过程与触发器 实验日期: 2022 年 5 月 20 日 星期 五 实验地点: 宿舍 一 实验目的 1. 掌握SQL Serve ...
- 数据库实验七 存储过程实验
1.实验目的 掌握数据库存储过程的设计和使用方法. 2.实验内容和要求 存储过程的定义,存储过程运行,存储过程更名,存储过程删除. 3.实验步骤 (1)定义一个存储过程proc1,更新所有订单( ...
- 数据库实验七:存储过程实验
数据库实验七:存储过程实验 233333,实验八的时候总感觉好像实验七计算的公式不太对,懒得改了就这样吧2333 定义一个存储过程proc2,更新给定订单的(含税折扣价)的总价,执行这个存储过程. 定 ...
- 数据库系统概论 实验报告答案 实验七:视图、索引及数据安全
实验七:视图.索引及数据安全 一.实验目的 1. 掌握视图特点: 2. 掌握使用SQL Server 2008创建及管理视图: 3. 掌握在对象资源管理器和T-SQL语句中创建和管理 ...
- 数据库实验七——视图、索引及数据安全
实验七:视图.索引及数据安全 一.实验目的 1.掌握视图特点: 2.掌握使用SQL Server 2008创建及管理视图: 3.掌握在对象资源管理器和T-SQL语句中创建和管理索引: 二.实验学时 2 ...
- 【数据库】实验七~十三
实验七 数据基本查询 所有的查询全部用 Transact-SQL 语句实现.此部分查询包括投影.选择条件表达.数 据排序.使用临时表等. 对 EDUC 数据库实现以下查询: (可根据数据表中的数据,对 ...
- 实验七 访问列表配置
实验七 访问列表配置 预备知识: ACL指令的放置顺序是很重要的. 当路由器在决定是否转发或者阻止数据报的时候,Cisco的IOS软件,按照ACL中指令的顺序依次检查数据报是否满足某一个指令条件. 当 ...
- c语言实验七实验报告,C语言实验七 数 实验报告.doc
C语言实验七 数 实验报告 C语言程序设计 实 验 报 告 实验题目 实验七 函数 实验目的 掌握函数定义的方法: 掌握函数实参与形参的对应关系,以及值传递的方式. 掌握函数的嵌套调用和递归调用的方法 ...
- c语言实验七 函数实验报告,C语言实验七函数实验报告.doc
C语言实验七函数实验报告 C语言程序设计 实 验 报 告 实验题目 实验七 函数 实验目的 掌握函数定义的方法: 掌握函数实参与形参的对应关系,以及值传递的方式. 掌握函数的嵌套调用和递归调用的方法: ...
- java实验 输入输出流_java实验七 输入输出流
有关java的实验和程序 实验七 输入输出流 一.实验目的和要求 目的: 1.掌握使用输入输出流进行文件的读写操作. 要求: 1.实验报告给出内容1,2的填充代码以及内容3的全部源代码. 二.实验内容 ...
最新文章
- Hibernate validation annonation
- 异常空格,ASCII (194,160)问题
- 44_pytorch数据增强,Resize,Flip,Rotate,Random Move Crop,Scale,Crop Part,Noise
- 第七章 DevOps工具链
- 《C语言编程初学者指南》一1.9 本章小结
- 值不值 | 三分钟搞定jpa?值不值!
- 巨坑:从Sqoop导入MySQL导入TINYINT(1)类型数据到hive(tinyint),数据为null
- 新版本发布潮:Ceylon 1.2、Node.js 5.0和Atom 1.1
- 拓端tecdat|R语言中编写最小工作示例(MWRE)
- android坐标画图软件下载,几何平板Geometry Pad(绘图,测量数字坐标轴)2.7.0
- 计算机课反思的作文600字,中考反思作文600字6篇
- Bumped!【迪杰斯特拉消边、堆优化】
- chrome 自动加载ajax.googleapis,使用Redirector插件解决googleapis公共库加载的问题
- 最好用的工程资料软件
- 芯动科技2023校招 FPGA岗位笔试
- 天才小毒妃 第961章 她不后悔就够了
- java红牛农场,在新加坡的,完一朋友一个夜班喝5瓶红牛。 下班坐地
- 结合北斗PPP_B2b 导航电文进行精密定位(PPP)
- echarts如何将柱形图的柱子分割成一小块一小块,也就是象形柱图
- 轻武宽带认证计费系统白皮书2019
热门文章
- HTML5的SVG画个五角星
- 1_15_python基础学习_0501
- 处理器哪个好_a14处理器和骁龙865哪个好 a14处理器和骁龙865区别对比_CPU_硬件教程...
- 2021-2027全球与中国绝对防水胶带市场现状及未来发展趋势
- html画一个倒三角,css 三角形画法
- 常用的自媒体工具有哪些?推荐4个常用辅助工具
- 基于 i.MX8MP的智能巡检机器人应用方案
- 第七届河南省程序设计大赛——B 物资调度
- 【iOS开发】跨平台开发再次袭来
- get,post请求方式详解