手机版

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

发布时间:2024-11-06   来源:未知    
字号:

数据库系统概论(第4版)王珊 萨师煊主编 课堂实验兼实验报告,内含实验具体截图

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

实验任务:

1、存储过程的创建、执行和删除。

(1)使用学生选课数据库中的student表、course表;sc表创建一个带参数的存储过程—cjjicx。该存储过程的作用是:当任意输入一个学生的姓名时,将从三个表中返回该学生的学号、选修的课程名称和课程成绩。 Cjjicx的创建语句:

create procedure [dbo].[cjjicx] @sname nchar(10) as

select s.sno,http://ame,sc.grade

from student as s inner join sc as sc on s.sno=sc.sno inner join course as c on http://o=http://o where sname=

@sname

(2)执行cjjicx存储过程,查询“XXX”(自己选个名字)的学号、选修课程和课程成绩。 执行语句:

execute cjjicx '李勇'

结果描述:

数据库系统概论(第4版)王珊 萨师煊主编 课堂实验兼实验报告,内含实验具体截图

(3)使用系统存储过程sp_helptext查看存储过程cjjicx的文本信息。使用系统存储过程sp_depends查看存储过程cjjicx中所涉及的对象信息。 执行语句:

(i)EXEC sp_helptext cjjicx (ii)EXEC sp_depends cjjicx 查看结果描述: (i)

(ii)

数据库系统概论(第4版)王珊 萨师煊主编 课堂实验兼实验报告,内含实验具体截图

(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

结果描述:查询结果来自表Student中所有计算机系的学生信息

数据库系统概论(第4版)王珊 萨师煊主编 课堂实验兼实验报告,内含实验具体截图

(6)删除jmxs存储过程。 删除语句:

DROP PROCEDURE jmxs

结果描述:存储过程jmxs已被删去,其在右侧“系统存储过程”下拉列表中已不存在

2、触发器的创建、执行和删除。

(1)在学生选课数据库中建立一个名为insert_xh的INSERT触发器,存储在SC表中。该触发器的作用是:当用户向SC表中插入记录时,如果插入了在Student表中没有的学生学号Sno,则提示用户不能插入记录,否则提示记录插入成功。 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 结果描述:

数据库系统概论(第4版)王珊 萨师煊主编 课堂实验兼实验报告,内含实验具体截图

(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' 运行结果:

数据库系统概论(第4版)王珊 萨师煊主编 课堂实验兼实验报告,内含实验具体截图

第二步:运行如下命令,显示表Student中所有数据,发现记录Sno=‘200215121’仍存在

SELECT * FROM

Student

(3)为SC数据库中的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

结果描述:

数据库系统概论(第4版)王珊 萨师煊主编 课堂实验兼实验报告,内含实验具体截图

验证:例如,运行如下命令,修改表SC中列Grade中的记录Sno=’200215121’AND Cno=’1’的数据

UPDATE SC SET Grade=87

WHERE Sno='200215121'AND Cno='1'

结果显示:查询已完成,但有错误! 禁止更新Grade字段内容

(4)禁用update_grade触发器。 禁用update_grade触发器的命令:

DISABLE TRIGGER update_grade ON

SC

禁用的后果描述:

当再次执行(3)中验证中的命令时,执行结果发生变化,显示触发器updata_grade没有起到禁用作用:

数据由92修改为87,表SC中显示:

数据库系统概论(第4版)王珊 萨师煊主编 课堂实验兼实验报告,内含实验具体截图

【注】:触发器的启用命令为:ENABLE TRIGGER MyTriggerName ON MyTableName (5)删除update_grade触发器。 删除update_grade触发器的命令: DROP TRIGGER update_grade

四、实验小结

实验八 存储过程与触发器的应用 实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
    ×
    二维码
    × 游客快捷下载通道(下载后可以自由复制和排版)
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
    × 常见问题(客服时间:周一到周五 9:30-18:00)