首页 > 代码库 > 存储过程与触发器的应用

存储过程与触发器的应用

一、实验目的

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

四、实验总结

最最基础的

存储过程与触发器的应用