实验9-10存储过程
实验9-10存储过程
以下是为大家整理的实验9-10存储过程的相关范文,本文关键词为实验,9-10,存储,过程,实验,存储,过程,实践,目的,理,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。
实验9存储过程
一、实践目的:
1.理解存储过程的概念,了解存储过程的类型
2.掌握创建各种存储过程的方法
3.掌握执行存储过程的方法
4.掌握查看、修改、删除存储过程的方法
二、实践内容
存储过程是一系列预先编辑好的、能实现特定数据操作功能的sQL代码集,它与特定的数据库相关联,存储在sQLserver服务器上。用户可以象使用自定义函数那样重复调用这些存储过程,实现它所定义的操作。
创建用户自定义的存储过程既可以用T-sQL语句,也可以用企业管理器。一般来说,创建一个存储过程应该按以下步骤进行:1)编写sQL语句
2)测试sQL语句是否正确,并能实现功能要求
3)若得到的结果符合预期要求,则按照存储过程的语法,创建该存储过程4)执行该存储过程,验证其正确性1.使用T-sQL语句创建存储过程(1)创建不带参数的存储过程
创建一个从student表查询班级号为g99402班的学生资料的存储过程proc_1use学生管理go
cReATepRoceDuReproc_1As
seLecTstudent_id,student_namefromstudentwhereclass_id=’g99402’在查询分析器中执行如下语句,可以完成存储过程的定义功能execproc_1
(2)创建带参数的存储过程
创建一个从student表查询学生资料的存储过程proc_2,要查询的班级号通过执行该
语句中的输入参数传递给存储过程use学生管理go
cReATepRoceDuReproc_2@class_nochar(6)As
seLecTstudent_id,student_namefromstudentwhereclass_id=@class_no 在查询分析器中执行如下语句,可以完成存储过程的定义功能execproc_2‘g99402’
其中99402为要传递给存储过程proc_2的输入参数,也就是要查询的班级资料(3)创建带输出参数的存储过程
创建一个从course表查询某一门课程考试成绩总分的存储过程proc_3use学生管理go
cReATepRoceDuReproc_3@course_nochar(10)@sum_gradeintouTpuTAs
seLecT@sum_grade=sum(grade)fromcoursewherecourse_id=course_no 2.使用T-sQL查看、修改和删除存储过程(1)查看存储过程sp_helptextproc_1
(2)查看有关存储过程的信息
使用系统存储过程sp_help可以查看有关存储过程的信息sp_helpproc_2(3)修改存储过程
将存储过程proc_1修改为查询班级号为g99402班的学生资料use学生管理
34
go
ALTeRpRoceDuReproc_1As
seLecTstudent_id,student_namefromstudentwhereclass_id=’g99402’(4)删除存储过程将存储过程proc_1删除DRoppRocproc_1 3.使用企业管理器创建、查看、修改和删除存储过程(1)创建存储过程
创建一个从sTuDenT表中查询班级为g99403班的学生资料的存储过程proc_5
1)进入企业管理器,展开相应的服务器组和相应的服务器节点。
2)按顺序展开【数据库】节点、要创建存储过程的数据库(学生管理)、再展开【存
储过程】子节点。
3)用鼠标右键单击【存储过程】,在系统弹出的快捷菜单中,单击【新建存储过程】,
出现【新建存储过程】窗口
4)在上面窗口中,直接输入下面语句:cReATepRoceDuReproc_5As seLecTstudent_id,student_namefromstudent
whereclass_id=’g99403’
单击【语法检查】按钮检查sQL语句是否存在语法错误。单击【确定】按钮,就可以在数据库中建立了新的存储过程proc_5。(2)查看、
修改存储过程
查看存储过程pRoc_5,并将其功能修改为从student表查询班级号为g99403班的男生资料。
使用企业管理器查看存储过程的方法如下:1)展开服务器组,然后展开服务器
2)展开【数据库】文件夹、展开存储过程所属的数据库,然后单击【存储过程】文件
夹
35
3)在详细信息窗格中,用鼠标右键单击需要查看的存储过程,然后单击【属性】命令。
也可以直接双击存储过程
4)该存储过程的定义代码显示在【存储过程属性】窗口文本框中,将seLecT语句修
改为:
seLecTstudent_id,student_namefromstudent
whereclass_id=’g99403’AnDsex=1
5)单击【确定】按钮,完成对存储过程的查看修改(3)删除存储过程将存储过程proc_5删除按如下步骤删除存储过程1)展开服务器组,然后展开服务器
2)展开【数据库】文件夹、展开存储过程所属的数据库,然后
单击【存储过程】文件
夹
3)在详细信息窗格中,用鼠标右键单击需要查看的存储过程,然后单击【删除】命令。4)若要查看删除后,此存储过程对数据库的影响,单击【显示相关性】命令即可。5)单击【全部除去】按钮,即可删除proc_5的存储过程。
36
实验10触发器
一、实验目的:
通过本实验:
1)理解触发器的概念及类型2)理解触发器的功能与工作原理3)掌握创建、更改、删除触发器的方法4)掌握利用触发器维护数据完整性的方法
二、实验内容
触发器(Trigger)是一种实施复杂数据完整性的特殊存储过程,在对表或视图执行upDATe、InseRT、DeLeTe语句时自动触发执行,以防止对数据进行不正确、未授权或不一致的修改。它可以向调用存储过程一样由用户直接调用执行。
触发器主要用于保护表中数据,实现数据的完整性。触发器也有三种类型:插入触发器、删除触发器、更新触发器
创建触发器可以用T-sQL语句,也可以用企业管理器。1.使用T-sQL语句创建触发器
(1)创建插入触发器
为表student_course创建一个插入触发器,当向表student_course 插入数据时,如果成绩grade大于等于60分,该学生就能得到相应的学分,否则,该学生不能得到相应的学分。useJwgLgo
IFexIsTs(seLecTnameFRomsysobjectswheRetype='TR'AnDname='credit_in sert')DRopTRIggeRcredit_insertgo
cReATeTRIggeRcredit_insertonstudent_courseFoRInseRTAs
DecLARe@credit0TInYInT
37
以下是为大家整理的实验9-10存储过程(2)的相关范文,本文关键词为实验,9-10,存储,过程,实验,存储,过程,实践,目的,理,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。
DecLARe@grade0TInYInT
seLecT@grade0=inserted.gradeFRominsertedseLecT@credit0=course.cre ditFRomcourse,insertedwheRecourse.course_id=inserted.course_idIF(@ grade>=60)begIn
upDATestudent_courseseTstudent_course.credit=@creditFRomstudent_c ourse,inserted
wheRestudent_course.course_id=inserted.course_idAnDstudent_course. student_id=inserted.student_idenDgo
(2)创建删除触发器
为表student创建一个删除触发器,当删除表student中一个学生的资料时,将表student_course中相应的成绩数据删除掉。useJwgLgo
IFexIsTs(seLecTnameFRomsysobjectswheRetype+'TR'AnDname='stud_del ete')DRopTRIggeR'stud_delete'go
cReATeTRIggeRstud_deleteonstudentFoRDeLeTeAs
DecLeARe@stud_idchAR(8)
seLecT@stud_id=deleted.student_idFRomdeleted
DeLeTeFRomstudent_coursewheRestudent_course.student_id=@stud_id (3)创建更新触发器
1)为表student_course创建一个更新触发器,当更改表student_course的成绩
数据时,如果成绩grade由原来的小于60分改为大于60分,该学生就能得到
38
相应学分,如果由原来的大于等于60分改为小于60分,则该学生相应的学分改为0
IFexIsTs(seLecTnameFRomsysobjectswheRetype+'TR'AnDname='credit_u pdate')DRopTRIggeR'credit_update'go
cReATeTRIggeRcredit_updateonstudent_courseFoRupDATeAs
DecLARe@credit0TInYInTDecLARe@grade0TInYInT
seLecT@grade0=inserted.gradeFRominsertedseLecT@credit0=course.cre ditFRomcourse,insertedwheRecourse.course_id=inserted.course_idIF(@ grade>=60)begIn
upDATestudent_courseseTstudent_course.credit=@creditFRomstudent_c ourse,inserted
wheRestudent_course.course_id=inserted.course_idAnDstudent_course. student_id=inserted.student_idenDeLsebegIn
upDATestudent_courseseTstudent_course.credit=0FRomstudent_course,i nserted
wheRestudent_course.course_id=insert.course_idAnDstudent_course.st udent_id=insert.student_idenDgo
2)为表student创建一个更新触发器,当更改表student中某学号学生的姓名时,
39
同时将student_course表中该学生的姓名更新。参照上例进行。
2.触发器的触发执行
1)向表student_course插入一行数据:
课程号dep04_s001,学号:9940303,成绩:75,学分:0,学期:0,学年:20XX/20XX该数据进行插入后,观察插入触发器credit_insert是否有变动,即学分credit字段是否自动改为5 2)将学号为9940303的同学资料从表student中删除掉,观察删除触发器
stud_delete是否有改变,即student_course表中新插入的数据是否自动删除。
3)将表student_course中课程号为dep04_s001,学号为9940303的行中成绩
grade由75改为34,观察更新触发器是否有变动,即学分字段是否自动改变为0;再将成绩grade由34改为98,观察更新触发器credit_updata字段是否由0自动变为5
3.查看、修改、删除触发器
(1)查看触发器的相关信息
1)查看student表中触发器的信息。使用存储过程sp_helptrigger 查看指定表
中所定义的触发器及他们的类型查看表student中触发器的信息:execsp_helptriggerstudent
2)查看触发器定义。使用系统存储过程sp_helptext可以查看指定触发器的定义
文本。
查看credit_insert触发器的定义代码:execsp_helptextcredit_insert 3)查看触发器的相关性。使用系统存储过程sp_depends可以查看指定触发器的
相关性,了解触发器所依赖的表或视图。查看sTuD_delete触发器的相关性:execsp_depengs’stud_delete触发器(2)修改、删除触发器
5)参照前面的列子,使用ALTeRTRIggeR语句将插入触发器credit_insert修改为:
如果成绩大于等于75分,该学生就能得到相应学分,否则,该学生不能得到相应
40
学分。
6)使用DRopTRIggeR语句删除stud_delete触发器.4.使用企业管理器管理触发器
(1)创建触发器
为表student_course创建另一个触发器student_id_insert,当向表student_course中插入数据时,必须保证插入的学号有效且存在于student表中,如果插入的学号在student表中不存在,则给出错误提示。
1)展开服务器组,然后展开服务器。
2)展开“数据库”文件夹,展开含有触发器表所属的数据库,然
后单击“表”文
件夹。
3)在详细信息窗口中,用鼠标右键单击含有触发器的表student,指向“所有任
务”菜单,然后单击“触发器管理”命令。出现“触发器属性窗口”。4)在“名称”中选择“新建”选项。
5)在“文本”框中显示的是触发器的关键T_sQL语句,输入student_id_insert
触发器文本。
6)若要检查语法,则单击“检查语法”命令。
7)单击“确定”按钮,完成触发器student_id_insert的创建,单击“关闭”按
钮,关闭对话框。
(2)修改、删除触发器
使用企业管理器对触发器进行修改、删除的步骤如下:1)展开服务组,然后展开服务器。
2)展开“数据库”文件夹,再展开触发器的表所属的数据库,然后单击“表”文件夹。7)在详细信息窗口中,用鼠标右键单击触发器所在的表。指向“所有任务”菜单,然
后单击“管理触发器”命令,同样出现“触发器属性窗口”。8)在“名称”框中选择触发器的名称。
9)如需要删除触发器,则单击“删除”按钮;如需要修改触发器,
则在“文本”字段
中更改触发器的文本。10)
最后单击“确定”按钮。
41
最后,小编希望文章对您有所帮助,如果有不周到的地方请多谅解,更多相关的文章正在创作中,希望您定期关注。谢谢支持!