存储过程和触发器(实验报告)

长 沙 理 工 大 学

计算机与通信工程学院

实 验 报 告

课程名称 数据库技术与应用 实验项目名称 存储过程和触发器 班级 学号 姓名

实验日期 年 月 日

指导教师签字

一﹑实验目的 (1) 掌握通过SQL Server管理平台和Transact-SQL语句Create procedure创建存储过程的方法和步骤; (2) 掌握使用Transact-SQL语句execute执行存储过程的方法; (3) 掌握通过SQL Server管理平台和Transact-SQL语句Alter procedure修改存储过程的方法; (4) 掌握通过SQL Server管理平台和Transact-SQL语句Drop procedure删除存储过程的方法; (5) 掌握通过SQL Server管理平台和Transact-SQL语句Create trigger创建触发器的方法和步骤; (6) 掌握引发触发器的方法; (7) 掌握使用SQL Server管理平台或Transact-SQL语句修改和删除触发器; (8) 掌握事务、命名事务的创建方法,了解不同类型的事务的处理情况。 二﹑实验平台 操作系统:Windows xp DBMS:SQL Server 2005 三﹑实验内容和步骤 1.使用studentsdb数据库中的student_info表、curriculum表、grade表。 (1)创建一个存储过程stu_grade,查询学号为0001的学生的姓名、课程名称、分数。 (2)执行存储过程stu_grade,查询0001学生的姓名、课程名称、分数。 (3)使用系统存储过程sp_rename将存储过程stu_grade更名为stu_g。 CREATE PROCEDURE stu_grade AS SELECT a.学号, c.课程名称, b.分数 FROM student_info a INNER JOIN grade b ON a.学号 = b.学号 INNER JOIN curriculum c ON b.课程编号 = c.课程编号 WHERE (a.学号 = '0001') EXEC stu_grade sp_rename stu_grade,stu_g 2.使用student_info表、curriculum表、grade表。 (1)创建一个带参数的存储过程stu_g_p,当任意输入一个学生的姓名时,将从3个表中返回该学生的学号、选修的课程名称和课程成绩。 (2)执行存储过程stu_g_p,查询“刘卫平”的学号、选修课程和课程成绩。 (3)使用系统存储过程sp_helptext,查看存储过程stu_g_p的文本信息。 CREATE PROCEDURE stu_g_p @stu_name varchar(8) AS SELECT a.学号, c.课程名称, b.分数 FROM student_info a INNER JOIN grade b ON a.学号 = b.学号 INNER JOIN curriculum c ON b.课程编号 = c.课程编号 WHERE (a.姓名 = @stu_name) EXEC stu_g_p ‘刘卫平’ sp_helptext stu_g_p 3.使用student_info表。 (1)创建一个加密的存储过程stu_en,查询所有男学生的信息。 (2)执行存储过程stu_en,查看返回学生的情况。 (3)使用Transact-SQL语句DROP PROCEDURE删除存储过程stu_en。 CREATE PROCEDURE stu_en WITH ENCRYPTION AS SELECT * FROM student_info WHERE 性别='男' EXEC stu_en DROP PROCEDURE stu_en 4.使用grade表。 (1)创建一个存储过程stu_g_r,当输入一个学生的学号时,通过返回输出参数获取该学生各门课程的平均成绩。 CREATE PROC stu_g_r @stu_no varchar(8)=NULL, @stu_score real OUTPUT AS SELECT @stu_score =AVG(分数) FROM grade WHERE (学号 =@stu_no) (2)执行存储过程stu_g_r,输入学号0002。 DECLARE @score real EXEC stu_g_r '0002',@score OUTPUT (3)显示0002号学生的平均成绩。 SELECT @score 5.为grade表建立一个名为insert_g_tr 的INSERT触发器,当用户向grade表中插入记录时,如果插入的是在curriculum表中没有的课程编号,则提示用户不能插入记录,否则提示记录插入成功。在进行插入测试时,分别输入以下数据: 学号 课程编号 分数 0004 0003 76 0005 0007 69 观察插入数据时的运行情况,说明为什么? CREATE TIGGER insert_g_tr ON grade FOR UPDATE,INSERT AS

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4