实验9-10存储过程

实验9-10存储过程
实验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

最后,小编希望文章对您有所帮助,如果有不周到的地方请多谅解,更多相关的文章正在创作中,希望您定期关注。谢谢支持!

相关主题
相关文档
最新文档