oracle游标(显示和隐示)之使用

Oracle隐式游标/显示游标 在通过select语句查询是,返回的结果通常是多行记录组成的集合。为此SQL提供了游标机制。游标可以充当指针的作用,使应用程序设计语言一次只能处理查询记过中的一行。在Oracle中,可以使用隐式和显示两种游标。在pl/sql 中程序所有发出的DML和select语句,Oracle都会自动声明“隐式游标”。为了处理由select语句返回的一组记录,需要在pl/sql程序中申明和处理“显示游标”。 阅读详情

要求:定义一个游标,使用FOR循环将班级编号为20010505的学生平均分按从高到低排名,
  要求在SQL*PLUS环境中显示学号,姓名,姓名,班级名称,平均分,名次字段。

create or replace procedure ShowAvgScoreDesc_Cursor is
begin
    
declare cursor studscore_cursor is
  
/*序号不能放在里面,而是放在外面,后放弃使用序号,而是系统变量rownum*/
  
select rownum as grade,studno,studname,classname,avgscore
  
from
  (
     
select  s.studno,studname,classname,round(avg(studscore),2) avgscore
      
from studinfo s,studscoreinfo ss,classinfo c
      
where s.studno=ss.studno and s.classid=c.classid
      
and s.classid='20010505'
      
group by s.studno,studname,classname
      
order by avg(studscore) desc
  );

  
begin
       
for studscore_record in studscore_cursor loop
           dbms_output.put_line(
'学号'||studscore_record.studno||',姓名'||studscore_record.studname||',班级名称:'||studscore_record.classname||'平均分:'||studscore_record.avgscore||',名次:'||studscore_record.grade);
      
end loop;
  
end;
end ShowAvgScoreDesc_Cursor;


注意:1,显示隐标属性%rowcount是个变化的值,即它不是这个游标的环境区域的总行数,而是一个不断增长的值,这不同于隐示游标,是多少就是多少.如:

DECLARE
CURSOR MyCurIS
SELECT ClassID,ClassNameFROM ClassInfo;
BEGIN
FOR mrecIN MyCur
LOOP
DBMS_OUTPUT.PUT_LINE(mrec.ClassID
||mrec.ClassName||'记录数:'||MyCur%Rowcount);
END LOOP;
END;

后碰到一个要求:创建一个存储过程,使用游标循环找出班级编号为20010505班的平均分最高的学生和最低的学生。(注:不能使用MAX,MIN)

create or replace procedure Pr_MaxAvgAndMinAvg is
begin
/*
创建一个存储过程,使用游标循环找出班级编号为20010505班的平均分最高的学生和最低的学生。(注:不能使用MAX,MIN)
*/

declare cursor MyCur is
      
select  s.studno,studname,classname,round(avg(studscore),2) avgscore
      
from studinfo s,studscoreinfo ss,classinfo c
      
where s.studno=ss.studno and s.classid=c.classid
      
and s.classid='20010505'
      
group by s.studno,studname,classname
      
order by avg(studscore) desc;
 i 
int;
 MaxCount 
int;/*而不是写在下面的语句中,也不用declare,因为前面已经有了*/
begin
        MaxCount:
=0; 
          i:
=1;       
                                                     
        
for studscore_record in MyCur loop
            dbms_output.put_line(
'');
            MaxCount:
=MaxCount+1;
        
end loop;       
      
        
         
for studscore_record in MyCur loop        
           
/*索引从1开始,不是0*/
             
if  i=1  then        
               dbms_output.put_line(
'学号'||studscore_record.studno||',姓名'||studscore_record.studname||',班级名称:'||studscore_record.classname||'平均分:'||studscore_record.avgscore);
             
end if;
             
if i=MaxCount then
              dbms_output.put_line(
'学号'||studscore_record.studno||',姓名'||studscore_record.studname||',班级名称:'||studscore_record.classname||'平均分:'||studscore_record.avgscore);
             
end if;            
         
         i:
=i+1;
        
end loop;
      
       
end;
end Pr_MaxAvgAndMinAvg;
SWIFT报文实战指南:从MT700到MT799的信用证操作全解析 本文深入解析了国际贸易中信用证操作的核心SWIFT报文流程,从开证的MT700到各类通知、修改及结算报文(如MT707、MT730、MT754、MT732/734等)。通过实战案例与关键字段拆解,指导外贸与银行从业者精准处理报文,规避风险,并探讨了利用自动化工具提升处理效率的方法,助力保障跨境交易顺畅。 阅读详情

相关推荐

Stata实战:5步搞定PSM倾向得分匹配(附完整代码与常见报错解决)

本文详细介绍了使用Stata进行PSM(倾向得分匹配)的5步实战流程,包括数据预处理、模型构建、匹配算法选择、匹配质量诊断和结果解释。提供完整代码示例和常见报错解决方案,帮助研究者高效完成实证分析,提升匹配成功率。

weixin_29214559的博客 591

【Oracle】游标 显式游标与隐式游标

在使用SQL语句进行查询时,获得和处理的结果是整个查询结果集,若需要进一步查询结果中的每条数据进行业务操作,仅靠SQL语句则无法实现,所以PL/SQL提出游标概念解决此类问题。 游标是一种特殊的指针,提供了对一个结果集进行逐行处理的能力。使用游标可以对结果集按行、按条件进行数据的提取、修改和删除操作。在物理结构上,游标是Oracle为用户开设的一个数据缓冲区,存放SQL语句的执行结果。 在Oracle数据库中执行的每个SQL语句都有对应的单独的游标。Oracle主要由以下两种游标类型:游标主要用于对结果集中

奥利文儿的博客 4518

手把手教你用STM32单片机控制双向可控硅调光(附完整代码+电路图)

本文提供了一套完整的STM32单片机控制双向可控硅实现灯光无级调光的实战方案。详细讲解了硬件电路设计,包括过零检测与隔离驱动,并剖析了基于定时器中断的软件核心逻辑,通过精准的相位角计算实现平滑的灯光强度控制。附有完整代码与电路图,适合嵌入式开发者实践。

weixin_29194255的博客 956

【Oracle】PL/SQL 显式游标、隐式游标、动态游标

在PL/SQL块中执行SELECT、INSERT、DELETE和UPDATE语句时,ORACLE会在内存中为其分配上下文区(Context Area),即缓冲区。游标是指向该区的一个指针,或是命名一个工作区(Work Area),或是一种结构化数据类型。 在每个用户会话中,可以同时打开多个游标,其数量由数据库初始化参数文件中的OPEN_CURSORS参数定义。 对于不同的SQL语句,游标的使用

Alpha's 学习笔记 1万+

WRF-CHEM 新手向实践(四):化学初始/边界场及namelist设置

这是这个系列的最后一节了,这些经验是自己作为一个半路出家的外行一步步摸索出来的,其中不免有很多理解不到位的地方,但也正是如此,我相信这是目前新手入门wrf-chem最友好的教程之一,希望能对大家有实质性的帮助。本节继续未完成的内容。在mozbc生成化学初始和边界条件之前,还需要先在wrfinput文件中开启化学部分。

qq_42335815的博客 4638

保姆级教程:手把手教你给联想System x 3650 M5服务器配置RAID 5并U盘装系统

本文提供联想System x 3650 M5服务器配置RAID 5并U盘安装系统的详细教程,特别适合零基础运维人员。从准备工作、RAID 5配置到U盘引导和系统安装,涵盖全流程关键步骤与常见问题解决方案,帮助用户高效完成服务器部署。

weixin_42535703的博客 358

游标:指向一个结果集的指针

---游标:指向一个结果集的指针 --便于理解的来说:指针就可以当做是这个结果集,循环这个指针,就可以拿到该结果集里的数据、分为:隐式游标和显式游标 -----------隐式游标:SELECT....INTO... --需要注意: 1、查询的结果只能是1行,不能是0行或者多行 2、不需要声明,直接可以使用 -----------显示游标:--声明显式游标的语法结构:DECLARE--声明的部分CURSOR游标名[(参数1数据类型[,参数2数据类型.....])]ISSELEC...

m0_51063580的博客 766

STM32串口调试踩坑记:HAL_UART_ErrorCallback里不先解锁,你的中断接收就废了

本文深入分析了STM32串口调试中HAL_UART_ErrorCallback的锁机制陷阱,指出在错误回调中不先解锁会导致中断接收失效的问题。通过解析HAL库源码,提出了正确的错误处理实现方法,并分享了预防措施与最佳实践,帮助开发者提升串口通信的可靠性。

weixin_33733810的博客 513

Oracle学习笔记之显式游标和隐式游标

游标的概念: 游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库。这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率。 游标有两种类型:显式游标和隐式游标。我们常用到的SELECT...INTO....

deban1634的博客 1034

openstack卷分离异常问题处理

对于 2023-05-10 之后的所有 OpenStack 版本,需要将Nova 配置为向 Cinder 发送服务令牌,然后 Cinder 接收该令牌。cinder.conf处添加service_token_role配置。1.修改nova的config文件添加如下配置。确定service role 是否存在。有关详细信息,请参阅。重启nova cinder 服务。nova-compute日志。cinder-api日志。

weixin_43391291的博客 477

Unity+Hybridclr发布WebGL记录

问题不多,比预想中的顺利,如果遇到问题建议先看Hybridclr的常见问题里面有没有解决方案,没遇到Hybridclr的报错,所以记录的问题里面没有Hybridclr相关的。导出设置里的压缩格式选择了Brotli,而服务器或浏览器不支持,据说是可以拓展服务器配置使支持Brotli,但是由于我本人是IIS小白,所以换了种压缩格式,在publishing Settings修改Compression Fromat为Gzip。3.在浏览器运行之后视图一直闪烁。,修改配置,这个网上很常见。

a598211757的博客 1038

oracle查询男生的平均分,查询出所有课程的平均分,人数

set serveroutput ondeclarecount1 number;count2 number;count3 number;avggrade number;cdno number;csno number;--cdname varchar2(20):='大学物理';cdname varchar2(20);pdname varchar2(20);cursor cdep is selec...

weixin_39755890的博客 564

docker-compose Install OrangeHRM

OrangeHRM是一个全面的人力资源管理HRM) 系统,它包含任何企业所需的所有基本功能。OrangeHRM旨在支持任何规模的团队,包括初创企业、中小企业以及大型跨国组织。

极致,细节 1004

显示游标获取数据(ORACLE)

转载自:https://blog.youkuaiyun.com/XiangZhengxian/article/details/55521951 -在Oracle中,当我们从PL/SQL中执行一条select语句时,Oracle RDBMS(关系数据库管理系统)会为该语句在SGA的共享池中分配一个私有SQL区, --同时在将查询结果集放入系统全局区SGA中,以提高访问和修改结果集的性能。 --私有SQL区包含...

Bernard Han的博客 1686

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

oracle游标使用:显示Cursor、隐示Cursor、动态Ref Cursor区别

今天简单的总结一下PL/SQL中cursor(光标/游标)的用法。 相信不少做开发或维护的DBA在找工作的时候,遇到过类似的面视问题:请简单的描述一下光标的类型,说一下普通光标和REF光标之间的区别,以及什么时候该正确应用哪一个?  这个题目,我着实难住了不少人,其实他们在具体开发的时候,也还是比较能够把握正确的光标的使用的,但就是说不出来,当然了,这与大家自身的沟流交通能力是有关系的...

quningstudy的专栏 239

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Oracle之游标

第11章 游标 行级触发器里的: 系统事件触发器: create or replace trigger 触发器名 {before|after}触发事件1 or 触发事件2 or 触发事件3 on 表名 declare 声明部分 begin 执行部分 end; 说明: 数据库事件:startup,shutdown,servererror,db_role_change 由系统管理员SYS创建 eg: ...

guoyaqi123456的博客 217

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Oracle(37)区别显式游标和隐式游标

特性显式游标隐式游标定义方式需要用户显式声明和管理由PL/SQL引擎自动创建和管理适用场景适用于复杂的逐行处理操作适用于简单的单行查询操作控制灵活性用户可以灵活控制游标的打开、提取和关闭系统自动管理游标的生命周期示例使用场景多行查询和逐行处理单行查询和简单数据提取性能影响需要手动管理资源,可能影响性能系统自动管理,通常性能较好显式游标和隐式游标各有优缺点,适用于不同的应用场景。显式游标提供了更多的控制和灵活性,适用于需要逐行处理查询结果的复杂操作;

qq_43012298的博客 800

Oracle显式游标与隐式游标

显式游标和隐式游标都可实现对记录的循环操作。显式游标需要用户遵循声明、打开、捕获记录、操作记录和关闭等步骤。隐式游标无须如此繁的步骤,而更接近于其他编程语言中的for循环。 虽然显式游标操作复杂,但使用上却可以更加灵活,例如,打开游标时传递参数,可以创建更加灵活多样的游标。相对而言,隐式游标步骤简练,但用户不能进行干预,因此适合于简单的游标操作。 一、显式游标: 可以方便地控制游标的

deepwishly专栏 1108

Oracle显式游标和隐式游标

<br />set serveroutput on; <br />  declare <br />  cursor mycur(vartype number)is <br />  select emp_no,emp_zc from cus_emp_basic <br />  where com_no=vartype; <br />  begin <br />  for person in mycur(000627) loop <br />  dbms_output.put_line('编号:'||perso

长安诗社社长@-梁瀚文- https://github.com/HevnChin https://gitee.com/HevnChin 855

ORACLE游标详解

Oracle游标

JF的博客 1万+

显示游标、隐式游标、高级游标

一。游标 1.定义: 游标是Oracle服务器为SQL语句建立的一个私有的SQL工作区。 2.种类: 显示游标:由编程者明确指定。 隐式游标:在缺省情况下,Oracle服务器以隐式游标来编译和执行SQL。 3.SQL游标属性: 使用SQL游标属性,可以测试SQL语句的输出。 游标属性 说明 SQL%ROWCOUNT 最后依次执行的SQL语句所影响到的数据行(一个整数值),几条数据受...

故园 3686

游标(概念、优点、分类、静态游标的使用(显示游标(显示游标的属性、遍历显示游标、显示游标的FOR循环)、隐式游标(隐式游标的属性))、动态游标的使用、静态游标和动态游标的区别、更新或删除当前游标数据

如前所述,

weixin_43809550的博客 3775

Oracle PL/SQL显示游标、隐式游标、游标循环

dba基础课程:Oracle PL/SQL显示游标、隐式游标、游标循环 显示游标 使用游标顺序 1.声明游标 2.打开游标 3.读取游标 4.数据是否为空,是关闭游标,否继续读取 1.声明游标 cursor cur_name[(input_parameter1,input_parameter2...)] [return ret_type]

oraclestudyroad的博客 2604

Oracle中显示游标、隐式游标、REF游标的使用

Oracle中游标的使用 1.游标概念 游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库。这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率。 个人理解:用来查询数据库,获取记录集合(结果集)的指针,可以让开发者一次访问一行结果集,在每条结果集上做操作。 2.生命周期 1)打开游标(OPEN):解析,绑定。。。不会从数据库检索数据

yiyiyaya519的博客 759

Oracle之游标(显式游标、隐式游标)

Oracle之游标(显式游标、隐式游标) 1. 游标的定义 在PL/SQL块中执行SELECT、INSERT、DELETE和UPDATE语句时,ORACLE会在内存中为其分配上下文区(Context Area),即缓冲区。游标是指向该区的一个指针,或是命名一个工作区(Work Area),或是一种结构化数据类型。它为应用等量齐观提供了一种对具有多行数据查询结果集中的每一行数据分别进行单独处理的方法...

ERA___的博客 2000

Oracle之显式游标与隐式游标

显式游标和隐式游标二者的区别 【oracle】PL/SQL显示游标、隐示游标、动态游标 Oracle显示游标,游标的基本原理: 在Oracle中,在执行一个有SELECT、INSERT、UPDATE和DELETE语句PL/SQL块时,Oracle会在内存中为其分配一个缓冲区,将执行结果放在这个缓冲区中,而游标是该区的一个指针。 游标分类: 静态游标 动态游标。 静态游标又分隐式游标和显示游标。 在每个用户会话中,可以同时打开多个游标,其数量由数据库初始化参数文件中的OPEN_CURSORS参.

weixin_45479126的博客 1492
上一篇: VS2005新建网站找不到网站模板
下一篇: 关于在VS2005开发环境下ACCESS数据库的连接相对路径问题
linux_wolfelite
博客等级 码龄20年 3粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值