数据库基础与实践实验报告
实验五 存储过程和触发器
班级:惠普测试142
学号:**********
*******
日期:2016-11-14
1 实验目的:
1)掌握SQL进行存储过程创建和调用的方法;
2)掌握SQL进行触发器定义的方法,理解触发器的工作原理;
3)掌握触发器禁用和重新启用的方法。
2 实验平台:
操作系统:Windows xp。
实验环境:SQL Server 2000以上版本。
3 实验内容与步骤
利用实验一创建的sch_id数据库完成下列实验内容。
1.创建存储过程JSXX_PROC,调用该存储过程时可显示各任课教师姓名及其所教课程名称。
存储过程定义代码:
CREATE PROCEDURE JSXX_PROC
AS
SELECT tn 教师姓名,cn 所教课程 FROM T,TC,C WHERE T.tno=TC.tno AND TC.cno=C.cno
存储过程执行语句与执行结果截图:
EXECUTE JSXX_PROC
2.创建存储过程XM_PROC,该存储过程可根据输入参数(学生姓名)查询并显示该学生的学号、所学课程名称和成绩;如果没有该姓名学生,则提示“无该姓名的同学”。
存储过程定义代码:
CREATE PROCEDURE XM_PROC @sname VARCHAR(100)
AS
BEGIN
IF EXISTS(SELECT NULL FROM S WHERE sn=@sname)
SELECT S.sno 学号,cn 课程,score 成绩 FROM S,SC,C WHERE SC.cno=C.sql触发器的使用cno AND SC.sno=S.sno AND S.sn=@sname
ELSE
PRINT '无该姓名的同学。'
END
运行截图:
3.创建存储过程XBNL_PROC,该存储过程可根据输入参数(专业名词,默认值为计算机专业),统计并显示该专业各年龄段男、女生人数。如果没有该专业,则显示“无此专业”。
存储过程定义代码:
CREATE PROCEDURE XBNL_PROC
@departName VARCHAR(30)='计算机',
@begin INT,
@end INT
AS
DECLARE @numOfBoys INT
DECLARE @numOfGirls INT
DECLARE @d# VARCHAR(3)
DECLARE @result VARCHAR(50)
BEGIN
SELECT @d# = dno FROM D WHERE dn=@departName
IF @d# IS NOT NULL
BEGIN
SELECT @numOfBoys = COUNT(sno) FROM S WHERE age BETWEEN @begin AND @end AND dno=@d# AND sex='男'
SELECT @numOfGirls = COUNT(sno) FROM S WHERE age BETWEEN @begin AN
D @end AND dno=@d# AND sex='女'
SET @result = @departName+'专业年龄在'+
CAST(@begin AS VARCHAR(3))+'-'+
CAST(@end AS VARCHAR(3))+'之间的男生有'+
CAST(@numOfBoys AS VARCHAR(3))+'人,'+'女生有'+
CAST(@numOfGirls AS VARCHAR(3))+'人'
END
ELSE
SET @result='无此专业。'
PRINT @result
END
执行结果:
4.执行XM_PROC存储过程,查询“贾慧”同学的学号、所学课程名称和成绩。
存储过程调用语句及其执行结果截图:
EXEC XM_PROC '贾慧'
5.如果学生表中无“贾慧”同学,则另查询一位学生表中出现过的学生姓名;如果学生表中有“贾慧”同学,则另查询一位学生表中没有的学生姓名。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论