使用游标、存储过程数据库题目:创建一个存储过程p_course_count,用于按照课程名称查询对应课程的选课人数并输出,默认课程为高等数学。
时间: 2024-02-11 10:08:46 浏览: 63
好的,以下是使用游标的方式创建存储过程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('英语');
```
其中,参数为要查询的课程名称,可以根据需要自行修改。如果不指定参数,则默认查询高等数学的选课人数。
阅读全文
相关推荐
















