在学生课程数据库中,编写一个存储过程,完成 统计计算机系学生的平均年龄

时间: 2024-03-18 21:41:51 浏览: 16
好的,下面是一个统计计算机系学生平均年龄的Oracle存储过程: ```sql CREATE OR REPLACE PROCEDURE CALCULATE_CS_AVG_AGE(avg_age OUT NUMBER) IS total_age NUMBER := 0; num_students NUMBER := 0; avg_age_temp NUMBER := 0; BEGIN -- 遍历所有计算机系学生,计算总年龄和学生数量 FOR student IN (SELECT * FROM students WHERE major = '计算机系') LOOP total_age := total_age + student.age; num_students := num_students + 1; END LOOP; -- 计算平均年龄 avg_age_temp := total_age / num_students; -- 将平均年龄存入输出参数 avg_age := ROUND(avg_age_temp, 2); END; / ``` 在这个存储过程中,我们使用了与上一个存储过程类似的方法,首先使用 FOR 循环遍历所有计算机系学生,计算出总年龄和学生数量。然后,我们使用这些数据计算出平均年龄,并将其存入输出参数中。
相关问题

在学生课程数据库中完成: 编写一个存储过程,计算每个成绩的绩点。

好的,以下是一个可能的练习题,希望能够帮助你巩固Oracle存储过程的知识。 题目要求: 在一个学生课程数据库中,有一个名为SC(学生-课程)的表格,其中每条记录包含三个字段:学生ID、课程ID和成绩。现在需要你编写一个存储过程,用于计算每个成绩的绩点。 要求实现的存储过程应该满足以下条件: 1. 存储过程的名称为calculate_GPA。 2. 存储过程应该能够计算出SC表格中每个成绩的绩点,并将其存储在一个名为GPA的新表格中。 3. GPA表格应该包含四个字段:课程ID、成绩、绩点和排名。其中排名字段表示该成绩在所有成绩中的排名。 4. 存储过程应该返回成功计算出绩点的记录数目。 参考答案: 下面是一个可能的参考答案,仅供参考。请注意,实际的存储过程实现可能会因为具体的数据库结构和要求而有所不同。 ``` CREATE OR REPLACE PROCEDURE calculate_GPA(p_calculated_count OUT NUMBER) AS BEGIN CREATE TABLE GPA AS SELECT course_id, score, CASE WHEN score >= 90 THEN 4.0 WHEN score >= 85 THEN 3.7 WHEN score >= 82 THEN 3.3 WHEN score >= 78 THEN 3.0 WHEN score >= 75 THEN 2.7 WHEN score >= 72 THEN 2.3 WHEN score >= 68 THEN 2.0 WHEN score >= 64 THEN 1.5 WHEN score >= 60 THEN 1.0 ELSE 0.0 END AS point, RANK() OVER (ORDER BY score DESC) AS rank FROM SC; p_calculated_count := SQL%ROWCOUNT; END; ``` 在这个存储过程中,我们首先使用CREATE TABLE语句创建一个名为GPA的新表格,其中包含课程ID、成绩、绩点和排名四个字段。然后,我们使用CASE语句计算出每个成绩的绩点,并将其存储在point字段中。最后,我们使用RANK() OVER函数计算出每个成绩在所有成绩中的排名,并将其存储在rank字段中。 你可以使用以下代码来调用这个存储过程,并查看返回结果: ``` DECLARE calculated_count NUMBER; BEGIN calculate_GPA(calculated_count); DBMS_OUTPUT.PUT_LINE('Calculated GPA for ' || calculated_count || ' records.'); END; ``` 在这个例子中,我们调用存储过程calculate_GPA,并将返回的记录数存储在变量calculated_count中。最后,我们使用DBMS_OUTPUT.PUT_LINE函数将结果输出到控制台。

在学生课程数据库中完成: 编写一个存储过程,修改给定学号、课程号的学生成绩。

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

相关推荐

最新推荐

recommend-type

数据库学生管理系统课程设计报告.doc

使用Visual Basic6.0语言和数据库建立连接,开发学生成绩管理系统,并且能成功运行,完成任务设计书中要求的功能。 2. 课程设计内容和要求 内容: 学生成绩管理系统 主要功能 1.用户登录窗口。 2.系统总控菜单窗口...
recommend-type

学生成绩管理系统——数据库课程设计2.doc

本数据库设计是为简单的课程设计探讨 | 对数据库系统的设计初学者 简单 | 容易模仿 | 能提供作业思路 不需积分即可下载
recommend-type

完美解决SQL server 5173问题(一个或多个文件与数据库的主文件不匹配)

一个或多个文件与数据库的主文件不匹配。如果是尝试附加数据库,请使用正确的文件重试该操作。如果这是现有数据库,则文件可能已损坏,应该从备份进行还原。 如果出现这个错误,不用急,这是mdf和ldf不一致导致,...
recommend-type

数据库原理及应用实验四(存储过程和触发器)

创建一个名为stu_pr的存储过程,该存储过程能查询出051班学生的所有资料,包括学生的基本信息、学生的选课信息(含未选课同学的信息)。要求在创建存储过程前请判断该存储过程是否已创建,若已创建则先删除,并给出...
recommend-type

【数据库作业14】第五章: 数据库完整性 习题 + 存储过程

黑笔是我写的,红笔是我在网上找的答案。我俩参考表设置的不一样,我设置反了! 他这个语句好像也不是标准SQL,应该是MYSQL还是Oracle吧。希望老师解答~ (1)统计离散数学成绩分布 CREATE TABLE SCC( Grades CHAR(5...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

云原生架构与soa架构区别?

云原生架构和SOA架构是两种不同的架构模式,主要有以下区别: 1. 设计理念不同: 云原生架构的设计理念是“设计为云”,注重应用程序的可移植性、可伸缩性、弹性和高可用性等特点。而SOA架构的设计理念是“面向服务”,注重实现业务逻辑的解耦和复用,提高系统的灵活性和可维护性。 2. 技术实现不同: 云原生架构的实现技术包括Docker、Kubernetes、Service Mesh等,注重容器化、自动化、微服务等技术。而SOA架构的实现技术包括Web Services、消息队列等,注重服务化、异步通信等技术。 3. 应用场景不同: 云原生架构适用于云计算环境下的应用场景,如容器化部署、微服务
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。