在学生课程数据库中完成: 编写一个存储过程,,删除指定课程所有-1分成绩。
时间: 2024-03-18 12:41:58 浏览: 76
好的,以下是一个可能的练习题,希望能够帮助你巩固Oracle存储过程的知识。
题目要求:
在一个学生课程数据库中,有一个名为SC(学生-课程)的表格,其中每条记录包含三个字段:学生ID、课程ID和成绩。现在需要你编写一个存储过程,用于删除指定课程的所有-1分成绩。
要求实现的存储过程应该满足以下条件:
1. 存储过程的名称为delete_minus_one_score,其中课程ID作为输入参数。
2. 存储过程应该能够删除SC表格中指定课程的所有成绩为-1的记录。
3. 存储过程应该返回成功删除的记录数目。
参考答案:
下面是一个可能的参考答案,仅供参考。请注意,实际的存储过程实现可能会因为具体的数据库结构和要求而有所不同。
```
CREATE OR REPLACE PROCEDURE delete_minus_one_score(p_course_id IN NUMBER, p_deleted_count OUT NUMBER) AS
BEGIN
DELETE FROM SC WHERE course_id = p_course_id AND score = -1;
p_deleted_count := SQL%ROWCOUNT;
END;
```
在这个存储过程中,我们首先使用DELETE语句删除SC表格中指定课程的所有成绩为-1的记录。然后,我们使用SQL%ROWCOUNT内置变量来获取成功删除的记录数目,并将其赋值给输出参数p_deleted_count。
你可以使用以下代码来调用这个存储过程,并查看返回结果:
```
DECLARE
deleted_count NUMBER;
BEGIN
delete_minus_one_score(1, deleted_count);
DBMS_OUTPUT.PUT_LINE('Deleted ' || deleted_count || ' records.');
END;
```
在这个例子中,我们将课程ID设为1,然后调用存储过程delete_minus_one_score,并将返回的记录数存储在变量deleted_count中。最后,我们使用DBMS_OUTPUT.PUT_LINE函数将结果输出到控制台。
阅读全文