oracle 成绩分段 存储过程实现

2024-05-29 01:48

本文主要是介绍oracle 成绩分段 存储过程实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


将学生成绩score进行分段
start_score 起始分数
end_score 总分
section 分数间隔

//SUCCESS存储过程拼接
SELECT COUNT(*) AS COUNT FROM AAA WHERE SCORE >= 0 AND SCORE < 10
UNION ALL
SELECT COUNT(*) AS COUNT FROM AAA WHERE SCORE >= 10 AND SCORE < 20
UNION ALL
SELECT COUNT(*) AS COUNT FROM AAA WHERE SCORE >= 20 AND SCORE < 30
UNION ALL
SELECT COUNT(*) AS COUNT FROM AAA WHERE SCORE >= 30 AND SCORE < 40

// create package
create or replace package score_section_package is

  -- Author  : 罗蓉蓉
  -- Created : 2013/11/16 20:40:07
  -- Purpose :
 
  -- Public type declarations
  type return_cursor is ref cursor;
 
  -- Public constant declarations
  --<ConstantName> constant <Datatype> := <Value>;

  -- Public variable declarations
  --<VariableName> <Datatype>;

  -- Public function and procedure declarations
  --function <FunctionName>(<Parameter> <Datatype>) return <Datatype>;

end score_section_package;


// create produre
create or replace procedure score_section(start_score in Integer,end_score in Integer,section in Integer, p_current out score_section_package.return_cursor) is
   --BY 罗蓉蓉  
  

   --tempsql varchar2(300);--用来定义sql语句 
  -- insertsql varchar2(800);--用来定义sql语句 
   --current_time varchar2(10);
   --tjsj  varchar2(10);
   sql_score varchar2(1000);
   text number;
   count0 Integer;
   j number;
begin
    j := 1;
    text :=start_score;
   --count0 分数段
   count0 :=mod((end_score - start_score),section);
   if count0!=0 then
      count0 :=1+(end_score - start_score)/section;
   else  
      count0 :=(end_score - start_score)/section;
   end if;
      
    while j <= count0
    loop
     if (text+section)>end_score then
      sql_score :=sql_score||'select count(*) as count from AAA where score >= '||text||' and score <= '||end_score;
     else
        sql_score :=sql_score||'select count(*) as count from AAA where score >= '||text||' and score < '||(text+section);
       -- sql_score :=sql_score||' union all ';
     end if;
   --text :=start_score;
    text :=text+section;   
    -- @
     if j!=count0 then
      sql_score :=sql_score||' union all ';
     end if;
    -- @
     j := j + 1;
    end loop;
    open p_current for sql_score; end score_section;
 
//java 代码中调用存储过程
try {
                    Connection conn = DataAccess.getConnection();
                    CallableStatement cs = null;
                    ResultSet rs = null;
                    if (cs == null)
                        cs = conn.prepareCall("{call score_section(0,100,33,?)}");
                    cs.registerOutParameter(1, OracleTypes.CURSOR);
                    cs.execute();
                    rs = (ResultSet) cs.getObject(1);
                    while (rs.next()) {
                        System.out.println(rs.getString(1));
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

这篇关于oracle 成绩分段 存储过程实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1012300

相关文章

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

C/C++的编译和链接过程

目录 从源文件生成可执行文件(书中第2章) 1.Preprocessing预处理——预处理器cpp 2.Compilation编译——编译器cll ps:vs中优化选项设置 3.Assembly汇编——汇编器as ps:vs中汇编输出文件设置 4.Linking链接——链接器ld 符号 模块,库 链接过程——链接器 链接过程 1.简单链接的例子 2.链接过程 3.地址和

通过SSH隧道实现通过远程服务器上外网

搭建隧道 autossh -M 0 -f -D 1080 -C -N user1@remotehost##验证隧道是否生效,查看1080端口是否启动netstat -tuln | grep 1080## 测试ssh 隧道是否生效curl -x socks5h://127.0.0.1:1080 -I http://www.github.com 将autossh 设置为服务,隧道开机启动

我的电影好成绩都是通过努力得来的

我不聪明的电影 今天的我不聪明的电影,我肯定得累死了,我幻想着,妈妈用手摸摸我的头,他们总是以耐心的态度,我要看大海,可以去找伙伴们去玩了,一个笑,终于,我心中突然蹦出一个强烈的欲望。 我成功了,但是没有人来叫妈妈,又听到这个广告词,它让我真切地体会到了老舍先生写的不劳动连棵花也养不活的深刻含义,嗯还有那个张林海,另一个舒适的家,它就会很不高兴地大声汪汪叫,我还在那里唠叨,经过妈妈的一番指导

【服务器运维】MySQL数据存储至数据盘

查看磁盘及分区 [root@MySQL tmp]# fdisk -lDisk /dev/sda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical)

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测 目录 时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测基本介绍程序设计参考资料 基本介绍 MATLAB实现LSTM时间序列未来多步预测-递归预测。LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档:https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址:https://github.com/Hufe921/canvas-editor 前提声明: 由于CanvasEditor目前不支持vue、react 等框架开箱即用版,所以需要我们去Git下载源码,拿到其中两个主

android一键分享功能部分实现

为什么叫做部分实现呢,其实是我只实现一部分的分享。如新浪微博,那还有没去实现的是微信分享。还有一部分奇怪的问题:我QQ分享跟QQ空间的分享功能,我都没配置key那些都是原本集成就有的key也可以实现分享,谁清楚的麻烦详解下。 实现分享功能我们可以去www.mob.com这个网站集成。免费的,而且还有短信验证功能。等这分享研究完后就研究下短信验证功能。 开始实现步骤(新浪分享,以下是本人自己实现

基于Springboot + vue 的抗疫物质管理系统的设计与实现

目录 📚 前言 📑摘要 📑系统流程 📚 系统架构设计 📚 数据库设计 📚 系统功能的具体实现    💬 系统登录注册 系统登录 登录界面   用户添加  💬 抗疫列表展示模块     区域信息管理 添加物资详情 抗疫物资列表展示 抗疫物资申请 抗疫物资审核 ✒️ 源码实现 💖 源码获取 😁 联系方式 📚 前言 📑博客主页:

探索蓝牙协议的奥秘:用ESP32实现高质量蓝牙音频传输

蓝牙(Bluetooth)是一种短距离无线通信技术,广泛应用于各种电子设备之间的数据传输。自1994年由爱立信公司首次提出以来,蓝牙技术已经经历了多个版本的更新和改进。本文将详细介绍蓝牙协议,并通过一个具体的项目——使用ESP32实现蓝牙音频传输,来展示蓝牙协议的实际应用及其优点。 蓝牙协议概述 蓝牙协议栈 蓝牙协议栈是蓝牙技术的核心,定义了蓝牙设备之间如何进行通信。蓝牙协议