存储过程和触发器实验报告.docx
- 文档编号:29438663
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:8
- 大小:72.33KB
存储过程和触发器实验报告.docx
《存储过程和触发器实验报告.docx》由会员分享,可在线阅读,更多相关《存储过程和触发器实验报告.docx(8页珍藏版)》请在冰豆网上搜索。
存储过程和触发器实验报告
长沙理工大学
计算机与通信工程学院
实验报告
课程名称数据库技术与应用
实验项目名称存储过程和触发器
班级通信1401班
学号姓名
实验日期2015年11月17日8:
00
指导教师签字
一﹑实验目的
(1)掌握通过SQLServer管理平台和Transact-SQL语句Createprocedure创建存储过程的方法和步骤;
(2)掌握使用Transact-SQL语句execute执行存储过程的方法;
(3)掌握通过SQLServer管理平台和Transact-SQL语句Alterprocedure修改存储过程的方法;
(4)掌握通过SQLServer管理平台和Transact-SQL语句Dropprocedure删除存储过程的方法;
(5)掌握通过SQLServer管理平台和Transact-SQL语句Createtrigger创建触发器的方法和步骤;
(6)掌握引发触发器的方法;
(7)掌握使用SQLServer管理平台或Transact-SQL语句修改和删除触发器;
(8)掌握事务、命名事务的创建方法,了解不同类型的事务的处理情况。
二﹑实验平台
操作系统:
Windowsxp或win7
DBMS:
SQLServer2005
三﹑实验内容和步骤
1.使用studentsdb数据库中的student_info表、curriculum表、grade表。
(1)创建一个存储过程stu_grade,查询学号为0001的学生的姓名、课程名称、分数。
(2)执行存储过程stu_grade,查询0001学生的姓名、课程名称、分数。
(3)使用系统存储过程sp_rename将存储过程stu_grade更名为stu_g。
2.使用student_info表、curriculum表、grade表。
(1)创建一个带参数的存储过程stu_g_p,当任意输入一个学生的姓名时,将从3个表中返回该学生的学号、选修的课程名称和课程成绩。
(2)执行存储过程stu_g_p,查询“刘卫平”的学号、选修课程和课程成绩。
(3)使用系统存储过程sp_helptext,查看存储过程stu_g_p的文本信息。
3.使用student_info表。
(1)创建一个加密的存储过程stu_en,查询所有男学生的信息。
(2)执行存储过程stu_en,查看返回学生的情况。
(3)使用Transact-SQL语句DROPPROCEDURE删除存储过程stu_en。
4.使用grade表。
(1)创建一个存储过程stu_g_r,当输入一个学生的学号时,通过返回输出参数获取该学生各门课程的平均成绩。
(2)执行存储过程stu_g_r,输入学号0002。
(3)显示0002号学生的平均成绩。
5.为grade表建立一个名为insert_g_tr的INSERT触发器,当用户向grade表中插入记录时,如果插入的是在curriculum表中没有的课程编号,则提示用户不能插入记录,否则提示记录插入成功。
在进行插入测试时,分别输入以下数据:
学号课程编号分数
0004000376
0005000769
观察插入数据时的运行情况,说明为什么?
6.为curriculum表创建一个名为del_c_tr的DELETE触发器,该触发器的作用是禁止删除curriculum表中的记录。
7.为student_info表创建一个名为update_s_tr的UPDATE触发器,该触发器的作用是禁止更新student_info表中的“姓名”字段的内容。
8.使用Transact-SQL语句DROPTRIGGER删除update_s_tr触发器。
9.为student_info表建立删除触发器del_s_tr,要求当student_info表的记录被删除后,grade表中相应的记录也能自动删除。
四﹑命令(代码)清单
(1)
1)createprocstu_gradeas
selectstudent_info.姓名,curriculum.课程名称,grade.分数
fromstudent_infoinnerjoingradeonstudent_info.学号=grade.学号
innerjoincurriculumoncurriculum.课程编号=grade.课程编号
wherestudent_info.学号='0001'
2)execstu_grade
3)sp_renamestu_grade,'stu_s'
(2)
1)createprocstu_g_p@stu_namechar(8)as
selectstudent_info.姓名,curriculum.课程名称,grade.分数
fromstudent_infoinnerjoingradeonstudent_info.学号=grade.学号
innerjoincurriculumoncurriculum.课程编号=grade.课程编号
wherestudent_info.姓名like@stu_name
2)execstu_g_p'刘卫平'
3)sp_helptextstu_g_p
(3)
1)createprocstu_nan
withencryptionas
select*fromstudent_info
where性别='男'
2)execstu_nan
3)dropprocstu_nan
(4)
1)createprocstu_g_r@stu_novarchar(8),@stu_scorerealoutput
asselect@stu_score=avg(分数)
fromgrade
where学号=@stu_no
2)declare@stu_scorereal
execstu_g_r'0002',@stu_scoreoutput
3)select@stu_score
(5)
createtriggerinsert_g_tr
ongradeforupdate,insert
as
declare@kc_idvarchar(8)
set@kc_id=(select课程编号frominsertd)
ifexists(select1fromcurriculumwhere课程编号=@kc_id)
begin
print'记录插入成功'
end
else
begin
raiserror('无此课程,不能插入记录',16,1)
End
insertgradevalues('0004','0003',76,null)
insertgradevalues('0005','0007',69,null)
(6)
createtriggerdelc_troncurriculum
fordelete
as
raiserror('禁止删除curriculum表中的记录',16,1)
rollbacktransaction
(7)
createtriggerupdate_s_tronstudent_infoforupdate
as
declare@name_oldvarchar(8)
declare@name_newvarchar(8)
set@name_old=(SELECT学生姓名FROMDeleted)
set@name_new=(SELECT学生姓名FROMInserted)
if(@name_old!
=@name_new)
begin
raiserror('不能修改姓名',16,1)
end
(8)
droptriggerupdate_s_tr
(9)
createtriggerdel_s_tronstudent_info
fordelete
as
declare@stu_nochar(4)
set@stu_no=(select学号fromdeleted)
deletefromgrade
where学号=@stu_no
五﹑调试和测试清单
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
六﹑教师批语与成绩评定
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 存储 过程 触发器 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)