数据库题目:创建一个存储过程p_course_count,用于按照课程名称查询对应课程的选课人数并输出,默认课程为高等数学。
时间: 2024-02-11 14:08:38 浏览: 27
好的,以下是创建p_course_count存储过程的SQL语句:
```
CREATE PROCEDURE p_course_count
(
IN course_name VARCHAR(50) DEFAULT '高等数学'
)
BEGIN
DECLARE course_count INT;
SELECT COUNT(*) INTO course_count FROM student_course WHERE course_name = course_name;
SELECT CONCAT('课程', course_name, '的选课人数为:', course_count) AS result;
END
```
以上存储过程接受一个参数`course_name`,默认为`高等数学`。在存储过程中,我们首先声明一个变量`course_count`用于存储选课人数。然后,使用`SELECT COUNT(*)`语句查询指定课程的选课人数,并将结果存储在`course_count`变量中。最后,使用`SELECT CONCAT()`语句将结果输出。
当我们调用`p_course_count`存储过程时,如果不传递参数,则默认查询高等数学课程的选课人数。例如,可以使用以下语句调用存储过程:
```
CALL p_course_count();
```
如果需要查询其他课程的选课人数,可以在调用存储过程时传递参数。例如,要查询英语课程的选课人数,可以使用以下语句:
```
CALL p_course_count('英语');
```
相关问题
使用游标、存储过程数据库题目:创建一个存储过程p_course_count,用于按照课程名称查询对应课程的选课人数并输出,默认课程为高等数学。
好的,以下是使用游标的方式创建存储过程p_course_count的SQL语句:
```
CREATE PROCEDURE p_course_count(IN course_name VARCHAR(50))
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE count INT;
DECLARE cur CURSOR FOR SELECT COUNT(*) FROM course_selection WHERE course_name = course_name;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
IF course_name IS NULL THEN
SET course_name = '高等数学';
END IF;
OPEN cur;
FETCH cur INTO count;
CLOSE cur;
SELECT CONCAT('课程 ', course_name, ' 的选课人数为 ', count) AS result;
END;
```
该存储过程与前面的存储过程类似,不同之处在于使用了游标来查询选课人数。首先,通过DECLARE语句声明了done、count和cur三个变量,其中done用于标记游标是否遍历完毕,count用于存储选课人数,cur为游标变量。然后,使用DECLARE CONTINUE HANDLER语句为游标设置异常处理程序,当游标遍历完毕时将done标记为TRUE。接着,使用IF语句判断course_name参数是否为空,如果为空则将其赋值为默认课程名称高等数学。接下来,使用OPEN语句打开游标,使用FETCH语句将查询结果存储到count变量中,最后使用CLOSE语句关闭游标。最后,使用SELECT语句输出查询结果。
调用该存储过程的语句如下:
```
CALL p_course_count('英语');
```
其中,参数为要查询的课程名称,可以根据需要自行修改。如果不指定参数,则默认查询高等数学的选课人数。
创建存储过程p_getbysno,根据指定的课程名得到学生的选课人数和及格人数,并调用存储过程:
好的,以下是创建存储过程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 '计算机基础';
```
其中,'计算机基础'是要查询的课程名,可以根据需要修改。执行该语句后,就可以得到选修该课程的学生人数和及格人数。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)