学生-课程模式 S-T : 学生表:Student(Sno,Sname,Ssex,Sage,Sdept),各属性分别表示学号(char(9)),学生姓名(char(20)),性别(char(2)),年龄(smallint),系别(char(20)) 课程表:Course(Cno,Cname,Cpno,Ccredit),各属性分别表示课程号(char(4)),课程名(char(40)),先修课程号(char(4)),学分(smallint) 学生选课表:SC(Sno,Cno,Grade),各属性分别表示学号(char(9)),课程号(char(4)),成绩(smallint) (1)设计一个函数Count_course,返回指定课程的选修学生人数。(没人选时返回0) (2)创建一个存储过程sp_countnumMale,查询指定系的男生人数,其中系为输入参数,人数为输出参数 (3)建一个存储过程sp_storeGrade,完成将SC表中指定的学生的特定课程的成绩记录保存到新表SC_new中。
时间: 2024-02-09 14:11:08 浏览: 131
好的,让我来分别回答您的三个问题:
(1) Count_course 函数可以如下设计:
```
CREATE FUNCTION Count_course(@Cno char(4))
RETURNS int
AS
BEGIN
DECLARE @count int;
SELECT @count = COUNT(*) FROM SC WHERE Cno = @Cno;
RETURN @count;
END
```
这个函数接收一个课程号作为参数,返回选修该课程的学生人数。
(2) sp_countnumMale 存储过程可以如下创建:
```
CREATE PROCEDURE sp_countnumMale
@Sdept char(20),
@numMale int OUTPUT
AS
BEGIN
SELECT @numMale = COUNT(*)
FROM Student
WHERE Sdept = @Sdept AND Ssex = '男';
END
```
这个存储过程接收一个系别作为输入参数,并返回该系的男生人数。其中 @numMale 是一个输出参数。
(3) sp_storeGrade 存储过程可以如下创建:
```
CREATE PROCEDURE sp_storeGrade
@Sno char(9),
@Cno char(4),
@Grade smallint
AS
BEGIN
INSERT INTO SC_new (Sno, Cno, Grade)
VALUES (@Sno, @Cno, @Grade);
END
```
这个存储过程接收一个学号、一个课程号和一个成绩作为参数,将它们插入到 SC_new 表中。请注意,SC_new 表需要先创建。
阅读全文