存储过程与触发器的应用

一、实验目的

1、掌握创建存储过程的方法和步骤。

2.掌握存储过程的用法;

3.掌握创建触发器的方法和步骤。

4.掌握触发器的使用方法。

二、实验内容

1、存储过程的创建、运行和删除;

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

三、实验步骤

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

1)使用S_C数据库中的S表、C表、SC表创建一个带參数的存储过程—cjjicx。该存储过程的作用是: 当随意输入一个学生的姓名时。将从三个表中返回该学生的学号、选修的课程名称和课程成绩。

cjjicx创建语句:

CREATE PROCEDURE cjjicx

@name char(6)

AS

BEGIN

SELECT S.sno, C.cname, SC.grade FROM S, C, SC

WHERE S.sname = @name AND S.sno = SC.sno AND SC.cno = C.cno 

END

2)运行cjjicx存储过程,查询“刘晨”的学号、选修课程和课程成绩。

运行语句:

EXEC cjjicx @name = '刘晨'

结果描写叙述:

3)使用系统存储过程sp_helptext查看存储过程cjjicx的文本信息。

查看结果描写叙述:

sp_helptext cjjicx

 

4)使用S-C数据库中的S表。为其创建一个加密的存储过程—jmxs。该存储过程的作用是:当运行该 存储过程时。将返回计算机系学生的全部信息。

jmxs创建语句:

CREATE PROCEDURE mxs WITH ENCRYPTION

AS

BEGIN

SELECT * FROM S

END

5)运行jmxs存储过程。查看计算机系学生的情况。

运行语句:

EXEC mxs

结果描写叙述:

SP_HELPTEXT mxs

 

6)删除jmxs存储过程。

删除语句:

DROP PROCEDURE mxs

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

1)在S_C数据库中建立一个名为insert_xhINSERT触发器,存储在SC表中。

该触发器的作用是: 当用户向SC表中插入记录时,假设插入了在S表中没有的学生学号sno。则提示用户不能插入记录, 否则提示记录插入成功。

insert_xh的创建语句:

CREATE TRIGGER insert_xh ON SC

AFTER INSERT

AS

BEGIN

IF(SELECT COUNT(*) FROM inserted JOIN S ON S.sno = inserted.sno) = 0

BEGIN

ROLLBACK TRAN

PRINT '用户不能插入记录'

END

ELSE

PRINT '记录插入成功'

END

2)为S_C数据库中的S表创建一个名为dele_stuDELETE触发器,该触发器的作用是禁止删除S 表中的记录。

dele_stu的创建语句:

CREATE TRIGGER dele_stu ON S

AFTER DELETE

AS

BEGIN

ROLLBACK TRAN

PRINT '禁止删除'

END

3)为S_C数据库中的SC表创建一个名为update_gradeUPDATE触发器,该触发器的作用是禁止更SC表中的grade字段的内容。

update_grade的定义语句:

CREATE TRIGGER update_grade ON SC

FOR INSERT, UPDATE

AS

DECLARE @grade1 INT;

DECLARE @grade2 INT;

SELECT @grade1 = inserted.grade FROM inserted

SELECT @grade2 = deleted.grade FROM deleted

BEGIN

IF(@grade1 != @grade2)

BEGIN

PRINT '不能改动分数'

ROLLBACK TRAN

END

END

4)删除update_grade触发器。

删除update_grade触发器的命令:

DROP TRIGGER update_grade

四、实验总结

最最基础的

原文地址:https://www.cnblogs.com/yutingliuyl/p/7344615.html