一、实验目的
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_xh的INSERT触发器,存储在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_stu的DELETE触发器,该触发器的作用是禁止删除S 表中的记录。
dele_stu的创建语句:
CREATE TRIGGER dele_stu ON S
AFTER DELETE
AS
BEGIN
ROLLBACK TRAN
PRINT '禁止删除'
END
3)为S_C数据库中的SC表创建一个名为update_grade的UPDATE触发器,该触发器的作用是禁止更 新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
四、实验总结
最最基础的