数据库基础与实践实验报告
实验五 存储过程和触发器
          班级:惠普测试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小时内删除。