版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上 实验六 存储过程和触发器一、目的与要求1. 掌握编写数据库存储过程的方法。2. 掌握建立数据库触发器的方法,通过实验观察触发器的作用和触发条件设置等相关操作。二、实验准备1. 了解编写存储过程和调用的T-SQL语法; 2. 了解触发器的作用;3. 了解编写触发器的T-SQL语法。三、实验内容(一) 存储过程在studentdb数据库中建立存储过程getPractice,查询指定院系(名称)(作为存储过程的输入参数)中参与“实践”课程学习的所有学生学号、姓名、所学课程编号和课程名称,若院系不存在,返回提示信息。提示:D_Info表中存储了院系代码D_ID,而St_In
2、fo表中学号字段St_ID的前两位与之对应,则D_Info表与St_Info表之间的联系通过这两个字段的运算构成连接条件。1. 分别执行存储过程getPractice,查询“法学院”和“材料科学与工程学院”的学生中参与“实践”课程的所有学生学号、姓名、所学课程编号和课程名称。create procedure getPractice D_Name varchar(30) output asbeginif not exists (select *from D_Infowhere D_Name= D_Name )print 对不起,该院系不存在elseselect st_info.St_ID,C_I
3、nfo.C_No,C_Namefrom s_c_info inner join st_info on st_info.St_ID=s_c_info.st_id inner join C_Info on s_c_info.c_no=C_Info.C_Nowhere st_info.St_ID in( select St_ID from st_info join D_Info on D_Info.D_ID =left(st_info.St_ID,2) where C_Info.C_Type=实践 and D_Info.D_Name= D_Name ) end go2. 利用系统存储过程sp_ren
4、ame将getPractice更名为getPctStuexecute sp_rename getPractice , getPctStu3. 修改存储过程getPctStu,返回指定院系中参与实践课程的学生人次数,并利用该存储过程以“法学院”为输入参数验证执行的结果alter procedure getPctStu D_Name varchar(30) asbeginif not exists (select *from D_Infowhere D_Name= D_Name )print 对不起,该院系不存在elseselect st_info.St_ID,C_Info.C_No,C_Name
5、,count (st_info.St_ID) as 人次数from s_c_info inner join st_info on st_info.St_ID=s_c_info.st_id inner join C_Info on s_c_info.c_no=C_Info.C_Nowhere st_info.St_ID in( select St_ID from st_info join D_Info on D_Info.D_ID =left(st_info.St_ID,2) where C_Info.C_Type=实践 and D_Info.D_Name= D_Name ) group by
6、st_info.St_ID,C_Info.C_No,C_Nameend Goexec getPctStu 法学院Go4. 再修改存储过程getPctStu,返回指定院系中参与实践课程的学生人数。注:“人数”和“人次数”是不同的,对某一学生而言,如果参与了多门实践课程,则“人次数”是指其参与的课程门数,而“人数”仍为1。(二) 触发器1.在studentdb数据库中建立一个具有审计功能的触发器:触发器名为tr_sc,功能要求:审计在s_c_info表中对score字段的更新和插入操作,将这些操作记录到sc_log表中,sc_log表中有如下字段:操作类型type,学号st_id,课程号c_no,
7、旧成绩oldscore,新成绩newscore,操作员uname,操作时间udate,其中操作员设定默认值为user,操作时间默认值为系统时间。create table sc_log(type varchar(4),st_id varchar(10),c_no varchar(10),oldscore int,newscore int,uname varchar(10) default user,udata datetime default getdate()gocreate trigger tr_scon s_c_infofor insert,updateas if update(score
8、)beginif(select count(*) from deleted)0insert into sc_log(type,st_id,c_no,oldscore,newscore)select update,s_c_info.st_id,s_c_info.c_no,i.score,d.score from s_c_info,inserted i,deleted dwhere s_c_info.st_id=i.st_id and i.st_id=d.st_idelseinsert into sc_log(type,st_id,c_no,newscore)select insert,st_id
9、,c_no,scorefrom insertedendgo3. 在s_c_info表上建立一个触发器tr_updasc,用于监控对成绩的更新,要求更新后的成绩不能比更新前低,如果新成绩低则取消操作,给出提示信息,否则允许更新。create trigger tr_updascon s_c_infoafter updateas declare cj1 int,cj2 intselect cj1=deleted.score from deletedselect cj2=inserted.score from insertedif(cj2cj1)beginraiserror(新成绩比老成绩低,取消操作
10、,16,1)rollback transactionendgo(三)查看存储过程和触发器的信息1.用sp_help查看以上建立的存储过程和触发器的基本信息sp_help tr_scgosp_help tr_updascgo2.用sp_helptext查看存储过程和触发器的代码sp_helptext tr_scgosp_helptext tr_updascgo四、思考与练习1存储过程如何加密?Create procedure encrypt_thisWith encryption -加密,在存储过程添加这一语句即可ASSelect* from user_tbGO查看存储过程储存的文本:Exec sp_helptext encrypt_this下面是结果集:The projects comments have been encrypted. -对象已经被加密2触发器有什么好处和坏处?使用触发器的好处:1. 自动执行。触发器在对表的数据作了任何修改(比如手工输入或者应用程序的操作)之后立即被激活。2. 级联更新。触发器可以通过数据库中的相关表进行层叠更改,这比直接把代码写在前台的做法更安全合理。3. 强化约束。触发器可以引用其它表中的列,能够实现比CHECK约束更为复杂的约束。4. 跟踪变化。触发器可以阻止数据库中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 拖拉机安全驾驶操作规程
- 北京警察学院《数字信号处理》2024 - 2025 学年第一学期期末试卷
- 北京警察学院《课程与教学论》2024 - 2025 学年第一学期期末试卷
- 2025年MBA综合能力模拟试卷(含逻辑题解析)实战演练
- 2026年口腔医疗管理公司院感监测与报告制度
- 2026年剧本杀运营公司线上营销平台管理制度
- 江苏省扬州市2025-2026年高三上学期一模语文试卷(含答案)
- 2026年通信行业5G技术应用报告及物联网创新报告
- 2026年及未来5年中国冲床设备市场供需格局及未来发展趋势报告
- 值班制度规章制度
- 大数据安全技术与管理
- 2026年中小学校长校园安全管理培训考试题及答案
- 2025租房合同范本下载(可直接打印)
- 药品临床综合评价实施方案
- 除尘布袋更换施工方案
- 养老护理员培训演示文稿
- 深圳加油站建设项目可行性研究报告
- 浙江省交通设工程质量检测和工程材料试验收费标准版浙价服定稿版
- 红楼梦研究最新课件
- 给纪检监察部门举报材料
- 低压电工安全技术操作规程
评论
0/150
提交评论