数据库实验五 存储过程

1.请写出下列创建存储过程的MySQL语句,存储过程名命名为PROC_StuRepInfo_学号最后两位

利用学生学号查询该名学生各学期的选修课程情况,要求显示学生的学号,姓名,选修的学年,学期,选修的课程号,课程名及其成绩,显示结果按学年和学期升序排列。

DELIMITER //

CREATE PROCEDURE PROC_StuRepInfo(

Sid CHAR(10))

BEGIN

    SELECT S.Sno, Sname, Racademicyear, Rterm, R.Cno, Cname, Grade

    FROM Students S, Reports R, Courses C

    WHERE S.Sno=R.Sno AND R.Cno=C.Cno

        AND S.Sno=Sid

    ORDER BY Racademicyear,Rterm;

END //

DELIMITER ;

请写出下列调用存储过程PROC_StuRepInfo_学号最后两位的MySQL语句,并将执行结果截图,截图的右下角要求标上你的学号最后两位

查询学号为‘2015112101'的选课情况

CALL Proc_StuRepInfo('2015112101');

请写出下列创建存储过程的MySQL语句,存储过程名命名为PROC_StuGrade_学号最后两位

查询某位学生指定课程的成绩和可获得这门课程的学分

(注:若该学生的课程成绩小于60分或是为空,则学分要显示为0分)

DELIMITER //

CREATE PROCEDURE PROC_StuGrade(

SN VARCHAR(4),CN VARCHAR(20))

BEGIN

    SELECT S.Sno,Sname,Cname,Grade,

        (CASE

            WHEN Grade<60 OR Grade IS NULL THEN 0

            ELSE Ccredit

         END) AS "Credit"

    FROM Students S INNER JOIN Reports R ON S.Sno=R.Sno

        INNER JOIN Courses C ON R.Cno=C.Cno

    WHERE S.Sname=SN AND C.Cname=CN;

END //

DELIMITER ;

CALL PROC_StuGrade_49('张建国','数据库系统原理');
CALL PROC_StuGrade_49('朱玉玲','计算机科学概论');

请写出下列创建存储过程的MySQL语句,存储过程名命名为PROC_StuCreditInfo_学号最后两位

利用学生学号查询该名学生在指定学年,指定学期所获得的学分数以及还未获得的学分数,若该门课程尚无成绩或成绩小于60分,则为尚未获得的学分,结果以变量形式输出(OUTPUT)。

DELIMITER //

CREATE PROCEDURE PROC_StuCreditInfo(

SN CHAR(10), ADyear INT, TM INT, OUT GetCredits INT, OUT NotGetCredits INT)

BEGIN

    SELECT SUM(Ccredit)

    FROM Reports R, Courses C

    WHERE R.Cno=C.Cno AND Sno=SN AND Racademicyear=ADyear

    AND Rterm=TM AND Grade>=60

    INTO GetCredits;

    SELECT SUM(Ccredit)

    FROM Reports R, Courses C

    WHERE R.Cno=C.Cno AND Sno=SN AND Racademicyear=ADyear

    AND Rterm=TM AND (Grade<60 OR Grade IS NULL)

    INTO NotGetCredits;

END //

DELIMITER ;

请写出下列调用存储过程PROC_StuCreditInfo_学号最后两位的MySQL语句,并将执行结果截图,截图的右下角要求标上你的学号最后两位

(1)查询学号为2016115101的学生2017年第2学期的学分情况

(2)查询学号为2014112104的学生2014年第1学期的学分情况

要求:若已获学分或未获学分返回为NULL,则结果要显示为0

SET @GetCredit=0,@NotGetCredit=0;
CALL PROC_StuCreditInfo('2016115101',2017,2,@GetCredit,@NotGetCredit);
SELECT '2016115101' AS"学号",2017 as "学年",2 as "学期",
      ifnull(@GetCredit,0) as "已获学分",IFNULL(@NotGetCredit,0)AS"未获学分";

请写出下列创建存储过程的MySQL语句,存储过程名命名为PROC_TeaTax_学号最后两位

统计指定教师每月需要缴纳的税金是多少,并将统计结果以变量形式输出(OUT)

如果是中级以下职称(含中级),则税金=(工资+岗位津贴-1500)*5%;

如果是副高级职称,则税金=(工资+岗位津贴-2000)*5%;

如果是正高级职称,则税金=(工资+岗位津贴-2500)*5%

提示:IF… ELSE…

注意:返回的税金应是实数

DELIMITER //

CREATE PROCEDURE PROC_TeaTax(

 TN VARCHAR(4), OUT Ttax DECIMAL)

BEGIN

    DECLARE tmp INT;

    DECLARE prof VARCHAR(8);

    SELECT Tprof  FROM Teachers

    WHERE Tname=TN

    INTO prof;

    IF (prof='教授') THEN

        SET tmp=2500;

    ELSEIF (prof='副教授') THEN

        SET tmp=2000;

    ELSE

        SET tmp=1500;

    END IF;

    SELECT (Tsal+Tcomm-tmp)*0.05 FROM Teachers

    WHERE Tname=TN

    INTO Ttax;

END //

DELIMITER ;

请写出下列调用存储过程PROC_TeaTax_学号最后两位的MySQL语句,并将执行结果截图,截图的右下角要求标上你的学号最后两位

(1)查询教师张雪应缴纳的税金

(2)查询教师田锋应缴纳的税金

SET @Ttax=0.0;
CALL PROC_TeaTax_49('张雪',@Ttax);
SELECT '张雪' AS "教师姓名",FORMAT(@Ttax,2) AS "税金";

  • 19
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值