创建选课表(SC),在创建的选课表(SC)的基础上,创建存储过程,对成绩进行等级转换输出。输入一个学号和课程号(输入参数),根据学号和课程号查询该同学的成绩(Grade),输出不同的评语。评价标准按如下方式进行:条件查询:if-else /// case Grade=100, 评语为“太牛了!” 90<=Grade<100, 评语为“优秀” 80<=Grade<90, 评语为“良好” 70<=Grade<80, 评语为“中等” 60<=Grade<70, 评语为“及格” 40<=Grade<60, 评语为“不及格” Grade<40, 评语为“太渣了!” 如果Grade 为 NULL, 评语为“缺考” 2. 创建函数,输入参数n, 计算1!+2!+ 3!+ …+ n! 的值。 3. 创建存储过程,根据调用时提供的学生姓名查询该学生所修课程的课程信息,在过程体中将课程号、课程名和成绩输出到输出窗口,给出过程调用语句块。
时间: 2024-02-06 07:11:54 浏览: 92
好的,以下是针对你提供的 SQL 实验题目的解答:
1. 创建选课表(SC):
```sql
CREATE TABLE SC
(
Sno VARCHAR(20) NOT NULL,
Cno VARCHAR(20) NOT NULL,
Grade INT,
PRIMARY KEY(Sno, Cno)
);
```
2. 创建存储过程,对成绩进行等级转换输出:
```sql
CREATE PROCEDURE GetGradeComment(IN sno VARCHAR(20), IN cno VARCHAR(20))
BEGIN
DECLARE grade INT;
SELECT Grade INTO grade FROM SC WHERE Sno = sno AND Cno = cno;
IF grade IS NULL THEN
SELECT '缺考' AS Comment;
ELSE
SELECT
CASE
WHEN grade = 100 THEN '太牛了!'
WHEN grade >= 90 AND grade < 100 THEN '优秀'
WHEN grade >= 80 AND grade < 90 THEN '良好'
WHEN grade >= 70 AND grade < 80 THEN '中等'
WHEN grade >= 60 AND grade < 70 THEN '及格'
WHEN grade >= 40 AND grade < 60 THEN '不及格'
ELSE '太渣了!'
END AS Comment;
END IF;
END;
```
3. 创建函数,计算1!+2!+ 3!+ …+ n! 的值:
```sql
CREATE FUNCTION FactorialSum(n INT)
RETURNS INT
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE sum INT DEFAULT 0;
WHILE i <= n DO
SET sum = sum + FACTORIAL(i);
SET i = i + 1;
END WHILE;
RETURN sum;
END;
```
4. 创建存储过程,根据调用时提供的学生姓名查询该学生所修课程的课程信息:
```sql
CREATE PROCEDURE GetCourseInfo(IN sname VARCHAR(20))
BEGIN
DECLARE sno VARCHAR(20);
SELECT Sno INTO sno FROM Student WHERE Sname = sname;
SELECT C.Cno, C.Cname, SC.Grade
FROM SC
INNER JOIN Course C ON SC.Cno = C.Cno
WHERE SC.Sno = sno;
END;
```
以上就是针对你提供的 SQL 实验题目的解答,希望对你有所帮助。
阅读全文