【存储过程】输入学生的姓名,打印出学生的最高分、最低分、平均分

复制代码
 1 create or replace procedure showStudentInfo(ThisStudentName varchar2)
 2 as
 3   thismax number;
 4   thismin number;
 5   thisavg number;
 6   sno number;
 7   line student%rowtype;
 8 begin
 9   select sid into sno from student where sname=ThisStudentName;  --先求学号,检测学号是否合法,不存在立即进入异常
10   select max(cmark),min(cmark),trunc(avg(cmark),2) into thismax,thismin,thisavg
11   from mark
12   where sid = sno;
13   dbms_output.put_line(ThisStudentName||'的最高分为:'||thismax||'最低分为:'||thismin||'平均分为:'||thisavg);
14 exception
15   when no_data_found then
16        dbms_output.put_line(ThisStudentName||'不存在,请核对!');
17   when too_many_rows then
18       for line in(select*from student where sname=ThisStudentName) loop      ---取出学生表的每一行  循环取出
19         select max(cmark),min(cmark),trunc(avg(cmark),2) into thismax,thismin,thisavg 
20         from mark
21         where sid=line.sid;
22          dbms_output.put_line(line.sid||ThisStudentName||'的最高分为:'||thismax||'最低分为:'||thismin||'平均分为:'||thisavg);
23       end loop;
24 end;
复制代码

 

1 -----调用---
2 set serveroutput on
3 begin 
4   showStudentInfo('萧瑾');
5 end;

 

 

posted @   勤快的懒羊羊  阅读(1484)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示