创建一个存储过程,利用游标依次读取course表中的所有的课程号(cno)和课程名(cname)
时间: 2024-01-19 08:03:11 浏览: 33
以下是一个利用游标依次读取 `course` 表中所有课程号和课程名的存储过程:
```
CREATE PROCEDURE read_course()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE cno VARCHAR(20);
DECLARE cname VARCHAR(50);
DECLARE cur CURSOR FOR SELECT cno, cname FROM course;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO cno, cname;
IF done THEN
LEAVE read_loop;
END IF;
-- 这里可以对每行数据进行处理
SELECT cno, cname; -- 例如,输出课程号和课程名
END LOOP;
CLOSE cur;
END;
```
在存储过程中,首先声明了一个游标 `cur`,并使用 `SELECT` 语句将 `course` 表中的课程号和课程名查询出来。然后,使用 `OPEN` 语句打开游标,并在 `FETCH` 语句中使用 `INTO` 子句将每一行数据读取到 `cno` 和 `cname` 变量中。在 `CONTINUE HANDLER` 语句中,设置了一个异常处理器,当游标已经遍历完所有数据时,将 `done` 标志设置为 `TRUE`。在 `LOOP` 中,不断地从游标中读取数据,并进行处理,直到读取完所有数据后跳出循环。最后,使用 `CLOSE` 语句关闭游标。
你可以根据需要修改存储过程中的输出内容,例如将每一行数据插入到另一个表中,或者将数据写入到文件中等等。