创建存储过程p_getbysno,根据指定的课程名得到学生的选课人数和及格人数,并调用存储过程:
时间: 2023-07-04 17:26:44 浏览: 40
好的,以下是创建存储过程p_getbysno的SQL语句:
```
CREATE PROCEDURE p_getbysno
@sno VARCHAR(20)
AS
BEGIN
SELECT
COUNT(*) AS total_num,
SUM(CASE WHEN score >= 60 THEN 1 ELSE 0 END) AS pass_num
FROM
SC
INNER JOIN
Course
ON SC.cno = Course.cno
WHERE
Course.cname = @sno;
END
```
这个存储过程的作用是:根据指定的课程名得到选该课程的学生人数和及格人数。
如果要调用该存储过程,可以使用以下SQL语句:
```
EXEC p_getbysno '计算机基础';
```
其中,'计算机基础'是要查询的课程名,可以根据需要修改。执行该语句后,就可以得到选修该课程的学生人数和及格人数。
相关问题
创建存储过程p_getbycname,根据指定的课程名得到选课人数和及格人数并调用该存储过程
好的,以下是创建存储过程p_getbycname的SQL语句:
```
CREATE PROCEDURE p_getbycname(IN cname VARCHAR(255), OUT total INT, OUT passed INT)
BEGIN
SELECT COUNT(*) INTO total FROM course_selection WHERE course_name = cname;
SELECT COUNT(*) INTO passed FROM course_selection WHERE course_name = cname AND grade >= 60;
END
```
该存储过程接收一个课程名cname作为输入参数,并输出选课人数total和及格人数passed。
接下来是调用该存储过程的SQL语句:
```
CALL p_getbycname('计算机网络', @total, @passed);
SELECT @total AS total, @passed AS passed;
```
这里以计算机网络课程为例,调用存储过程并将返回值赋值给变量@total和@passed,最后输出这两个变量的值。注意,在调用存储过程之前需要先声明变量@total和@passed。
创建存储过程p_getbysno,根据指定的学号得到学生的选课门数和总分
好的,以下是创建存储过程p_getbysno的SQL语句:
```
CREATE PROCEDURE p_getbysno(IN sno VARCHAR(20), OUT course_num INT, OUT total_score FLOAT)
BEGIN
SELECT COUNT(*) INTO course_num, SUM(score) INTO total_score FROM score WHERE sno = sno;
END
```
这个存储过程接受一个学号作为参数,返回该学生选课门数和总分。其中,IN表示输入参数,OUT表示输出参数。在存储过程体中,使用SELECT语句查询score表,得到该学生选课门数和总分,然后将结果赋值给对应的输出参数。