利用游标输出“计算机”专业学生的成绩。并用while结构来测试全局变量@@Fetch_Status的返回值。 --输出格式如下: --学号------------姓名-----------专业---------课程名字------------成绩
时间: 2023-11-06 15:05:38 浏览: 48
利用游标输出“计算机”专业学生的成绩,可以按照以下步骤进行操作:
```sql
DECLARE
CURSOR c1 IS SELECT * FROM 学生表 WHERE 专业 = '计算机';
v_id 学生表.学号%TYPE;
v_name 学生表.姓名%TYPE;
v_major 学生表.专业%TYPE;
v_course 成绩表.课程名字%TYPE;
v_score 成绩表.成绩%TYPE;BEGIN
DBMS_OUTPUT.PUT_LINE('学号'||'------------'||'姓名'||'-----------'||'专业'||'---------'||'课程名字'||'------------'||'成绩');
OPEN c1;
LOOP
FETCH c1 INTO v_id, v_name, v_major;
EXIT WHEN c1%NOTFOUND;
SELECT 课程名字, 成绩 INTO v_course, v_score FROM 成绩表 WHERE 学号 = v_id;
DBMS_OUTPUT.PUT_LINE(v_id||'------------'||v_name||'-----------'||v_major||'---------'||v_course||'------------'||v_score);
END LOOP;
CLOSE c1;
END;
```
使用while结构来测试全局变量@@Fetch_Status的返回值,可以按照以下步骤进行操作:
```sql
DECLARE
CURSOR c1 IS SELECT * FROM 学生表 WHERE 专业 = '计算机';
v_id 学生表.学号%TYPE;
v_name 学生表.姓名%TYPE;
v_major 学生表.专业%TYPE;
v_course 成绩表.课程名字%TYPE;
v_score 成绩表.成绩%TYPE;
BEGIN
DBMS_OUTPUT.PUT_LINE('学号'||'------------'||'姓名'||'-----------'||'专业'||'---------'||'课程名字'||'------------'||'成绩');
OPEN c1;
@@Fetch_Status := 1;
WHILE @@Fetch_Status = 1 LOOP
FETCH c1 INTO v_id, v_name, v_major;
SELECT 课程名字, 成绩 INTO v_course, v_score FROM 成绩表 WHERE 学号 = v_id;
IF @@Fetch_Status = 0 THEN
EXIT;
END IF;
DBMS_OUTPUT.PUT_LINE(v_id||'------------'||v_name||'-----------'||v_major||'---------'||v_course||'------------'||v_score);
END LOOP;
CLOSE c1;
END;
```