实验八存储过程与触发器的应用实验报告.doc

实验八存储过程与触发器的应用实验报告.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验八存储过程与触发器的应用实验报告

实验八:存储过程与触发器的应用 实验任务 1、存储过程的创建、执行和删除。 (1)使用学生选课数据库中的student表、course表;sc表创建一个带参数的存储过程—cjjicx。该存储过程的作用是:当任意输入一个学生的姓名时,将从三个表中返回该学生的学号、选修的课程名称和课程成绩。 Cjjicx的创建语句: create procedure [dbo].[cjjicx] @sname nchar(10) as select s.sno,c.cname,sc.grade from student as s inner join sc as sc on s.sno=sc.sno inner join course as c on c.cno=sc.cno where sname=@sname (2)执行cjjicx存储过程,查询“XXX”(自己选个名字)的学号、选修课程和课程成绩。 执行语句: execute cjjicx 李勇(3)使用系统存储过程sp_helptext查看存储过程cjjicx的文本信息。使用系统存储过程sp_depends查看存储过程cjjicx中所涉及的对象信息。 EXEC sp_helptext cjjicx (ii)EXEC sp_depends cjjicx 查看结果描述: (i) (ii) (4)使用学生选课数据库中的student表,为其创建一个存储过程—jmxs。该存储过程的作用是:当执行该存储过程时,将返回计算机系学生的所有信息。 Jmxs创建语句: CREATE PROCEDURE jmxs AS SELECT Student.Sno,Student.Sname,Student.Ssex,Student.Sage,Student.Sdept FROM Student WHERE Sdept=CS GO 结果描述:存储过程jmxs已成功建立:右侧“系统存储过程”下拉列表中显示 (5)执行jmxs存储过程,查看计算机系学生的情况。 执行语句: EXECUTE jmxs 结果描述: (6)删除jmxs存储过程。 删除语句: DROP PROCEDURE jmxs 结果描述:存储过程jmxs已被删去,其在右侧“系统存储过程”下拉列表中已不存在 2、触发器的创建、执行和删除。 (1)在学生选课数据库中建立一个名为insert_xh的INSERT触发器,存储在表中。该触发器的作用是:当用户向表中插入记录时,如果插入了在tudent表中没有的学生学号no,则提示用户不能插入记录,否则提示记录插入成功。 insert_xh的创建语句: CREATE TRIGGER insert_xh ON SC FOR insert AS DECLARE @Sno nchar(10),@number int SELECT @Sno=sno FROM inserted SELECT @number=count(*) FROM student s WHERE s.Sno=@sno IF(@number=0) BEGIN PRINT 不能插入 ROLLBACK TRANSACTION END 结果描述: (2)为S_C数据库中的student表创建一个名为dele_stu的DELETE触发器,该触发器的作用是禁止删除student表中的记录。 dele_stu的创建语句: CREATE TRIGGER dele_stu ON Student INSTEAD OF DELETE AS PRINT数据删除不成功 GO 验证:第一步:在表Student中删除记录Sno=‘200215121’,运行如下命令: DELETE FROM Student WHERE Sno=200215121 运行结果: 第二步:运行如下命令,显示表Student中所有数据,发现记录Sno=‘200215121’仍存在 SELECT * FROM Student (3)为数据库中的sc表创建一个名为update_grade的UPDATE触发器,该触发器的作用是禁止更新sc表中的grade字段的内容。 update_grade的定义语句: CREATE TRIGGER update_grade ON SC FOR UPDATE AS IF UPDATE (Grade) BEGIN PRINT禁止更新Grade字段内容 ROLLBACK TRANSACTION END GO 验证:例如,运行如下命令,修改表SC中列Grade中的记录Sno=’200215121’AND Cno=’1’的数据 UPDATE SC SET Grade=87 WHERE Sno=200215121AND Cno=1 结果显示:查询已完成,但有错误! 禁止更新Grade字段内

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档