版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.实验存储过程一、实验目的( 1)掌握 T-SQL流控制语句。( 2)掌握创建存储过程的方法。( 3)掌握存储过程的执行方法。( 4)掌握存储过程的管理和维护。二、实验内容1、创建简单存储过程( 1)创建一个名为stu_pr 的存储过程, 该存储过程能查询出051班学生的所有资料,包括学生的基本信息、学生的选课信息(含未选课同学的信息)。要求 在创建存储过程前请判断该存储过程是否已创建,若已创建则先删除,并给出“已删除! ”信息,否则就给出“不存在,可创建! ”的信息。ifexists( select*fromsysobjectswherename = 'stu_pr'andt
2、ype= 'P')begindropprocedurestu_prprint' 已删除! 'endelseprint' 不存在,可创建!'createprocedurestu_prasselectdistinct*fromStudentsleftjoinSC ons . Sno = SC. SnoleftjoinCourseconc . Cno = sc . CnowhereClassno= '051'1/13.执行:execstu_pr2、创建带参数的存储过程( 1)创建一个名为 stu_proc1 的存储过程, 查询某系、 某
3、姓名的学生的学号、姓名、年龄,选修课程名、成绩。系名和姓名在调用该存储过程时输入,其默认值分别为 “%”与 “林%”。执行该存储过程,用多种参数加以测试。ifexists( select*fromsysobjectswherename = 'stu_proc1'andtype= 'P')begindropprocedurestu_proc1print' 已删除! 'endelseprint' 不存在,可创建!'2/13.createprocedurestu_proc1sdept varchar ( 10 )= '%'
4、; , sname varchar ( 10 )= ' 林 %' asselectSname , s . Sno , YEAR( getdate()-YEAR( Birth)Age , Cname , GradefromStudents , Coursec , SCwheres . Sno =sc . Snoandc . Cno = sc . Cnoands . Snamelikesnameands . Sdeptlikesdept执行:、 execstu_proc1、 execstu_proc1sdept= '%', sname= ' 林 %'
5、3/13.( 2)创建一个名为Student_sc 的存储过程,可查询出某段学号 的同学的学号、姓名、总成绩。(学号起始号与终止号在调用时输入,可设默认值)。执行该存储过程。ifexists( selectnamefromsysobjectswherename = 'Student_sc'andtype= 'P')dropprocedureStudent_scgocreateprocedureStudent_scsno_beginvarchar( 10 )= '20110001', sno_endvarchar( 10 )= '20110
6、103'asselects . Sno , Sname , SUM( grade)total_gradefromStudents , SCwhere s . Sno =sc . Sno and s . Sno between sno_begin and sno_end group by s . Sno , Sname执行:execStudent_sc4/13.3、创建带输出参数的存储过程( 1)创建一个名为 Course_sum的存储过程,可查询某门课程考试的总成绩。总成绩可以输出,以便进一步调用。ifexists( selectnamefromsysobjectswherename
7、= 'Course_sum'andtype= 'P')dropprocedureCourse_sumcreateprocedureCourse_sumcnamevarchar ( 10 )= '%'asselectSUM( grade )total_grade, COUNT( sno ) snofrom Course c , SCwherec . Cno =sc . Cno and Cnamelikecname5/13.执行:execCourse_sum' 高数 '(2)创建一执行该存储过程的批处理,要求当总成绩小于100时,显示
8、信息为: “ XX课程的总成绩为: XX, 其总分未达 100分”。超过 100时,显示信息为: “ XX课程的总成绩为: XX”。createproceduresum_grade2cnamevarchar( 10 ), sum smallintoutputasselectsum= sum ( grade )from Course c , SCwherec . Cno =sc . Cno and Cname likecnamedeclaresumgrade smallintexecsum_grade2' 高数 ' , sumgrade outputif sumgrade <
9、; 100beginprint' 高数的总成绩为:' + CAST( sumgradeAS varchar( 20 )+' ,其总分未达到分。 'endelseprint' 高数的总成绩为:' + CAST( sumgradeAS varchar( 20 )+' 。 '6/13.4、创建带重编译及加密选项的存储过程创建一个名为 update_sc 、并带重编译及加密选项的存储过程,可 更新指定学号、指定课程号的学生的课程成绩 。(学号、课程号由调用时输入)ifexists( selectnamefromsysobjectswher
10、ename = 'update_sc'andtype= 'P')dropprocedureupdate_sccreateprocedureupdate_sccnovarchar( 10 ), snovarchar( 10 ),gradeintwithrecompile, encryption-重编译,加密asupdateSCsetgrade= gradewhereSC. Cno = cnoandSC. Sno =sno7/13.execupdate_sc'001', '20110001', '80'5、使用 T-S
11、QL语句管理和维护存储过程( 1)使用 sp_helptext 查看存储过程 Student_sc 的定义脚本sp_helptextStudent_sc(2)使用 select语句查看 Student_sc存储过程的定义脚本(提示:通过查询表sysobjects和表 syscomments)selecto . id ,c . textfromsysobjectsoinnerjoinsyscommentscono . id =c . idwhereo . type= 'p'ando . name= 'Student_sc'8/13.(3)将存储过程stu_pr 改
12、为查询学号为2011001的学生的详细资料。alterprocedurestu_prsnovarchar( 10 )asselectdistinct*fromStudentwhereSno = '20110001'execstu_prsno ='2011001'(4)删除存储过程stu_pr 。dropprocedurestu_pr6、使用 SQL Server Management Studio管理存储过程(1)在 SQL Server Management Studio 中重新创建刚删除的存储过程stu_pr选择数据库 Student_info可编程性存储过
13、程,右击“存储过程”新建存储过程9/13.出现如下画面:修改存储过程的名称为stu_pr修改 SQL语句,使之成为完整的存储过程CREATEPROCEDURE stu_pr- Add the parameters for the stored procedure hereASBEGIN- SET NOCOUNT ON added to prevent extra result sets from- interfering with SELECT statements.SETNOCOUNT ON;- Insert statements for procedure hereSELECTdistin
14、ct*fromStudentsleftjoinSC ons . Sno =SC. SnoleftjoinCourseconc . Cno =sc . CnowhereClassno= '051'END10/13.( 2)查看存储过程 stu_pr ,并将该过程修改为查询 051班女生的所有资料。可编程性存储过程 stu_pr ,右击 stu_pr 修改出现如下画面:11/13.修改 SQL语句,使之能查询 051班所有女生的资料的存储过程 ALTER PROCEDURE dbo . stu_pr- Add the parameters for the stored procedure hereASBEGIN- SET NOCOUNT ON added to prevent extra result sets from- interfering with SELECT statements.SETNOCOUNT ON;- In
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年有限责任公司设立协议范本
- 2024公司专业工程承包协议模板
- 2024司机常年服务协议模板
- 门面房产交易协议2024
- 代理协议解除协议文本2024年
- 复合肥订货协议(2024年度)
- 2024年格式招标买卖协议样本
- 数智驱动下研究生教育治理的现状与挑战
- 教育强国背景下的教师教育转型发展实施方案
- 2024年车辆租赁协议范本
- 生活中的工业设计智慧树知到期末考试答案章节答案2024年南开大学
- 化妆品生产工艺验证报告范文模板-新规要求工艺参数及关键控制点验证
- AutoCAD 2018基础教程综合实例
- 服务类验收单
- 城市管理大数据平台 第2部分:数据分级分类
- 工程施工合同履约课件
- 《整式的加减》第1课时 教学设计
- 医院科研工作计划及实施方案
- 桥梁结构健康监测系统实施和验收规范
- 2024安徽交控集团所属企业校园招聘笔试参考题库附带答案详解
- 退休项目经理返聘合同-工程管理
评论
0/150
提交评论