MySql必知必会实战练习(六)游标

游标主要用于交互式应用,滚动屏幕上的数据,并对数据进行浏览或做出更改看一下下面的例子:输出:由于结果为多行无法显示,这时我们就需要使用游标来操作1.游标基本方法(1)创建游标(2)打开游

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

  游标主要用于交互式应用,滚动屏幕上的数据,并对数据进行浏览或做出更改

  看一下下面的例子:

drop procedure IF EXISTS processorders;
create procedure processorders(
    out ordernum int
)
begin
    select order_num from orders into ordernum;
end;

call processorders(@ordernum);
select ordernum;

  输出:

  MySql必知必会实战练习(六)游标

  由于结果为多行无法显示,这时我们就需要使用游标来操作

 1. 游标基本方法

(1)创建游标

create procedure processorders()
begin
    declare ordernums cursor for     select order_num from orders;
end;

 (2)打开游标

open ordernums;

(3)关闭游标

close ordernums;

  在一个游标关闭后,如果没有重新打开,则不能使用它。

  使用申明过的游标不需要再次声明,用open语句打开它就可以了。

2.游标使用示例

drop procedure IF EXISTS processorders;
create procedure processorders(
    out numbers int,
    out custid int
)
begin
    #声明游标
    declare ordernums cursor for
    select order_num,cust_id from orders;
    
    #打开游标
    open ordernums;
    
    #用来检索当前行的order_num(自动从第一行开始)
    fetch ordernums into numbers, custid;  
    
    #关闭游标
    close ordernums;
end;

call processorders(@numbers,@custid);
select @numbers,@custid;

   会看到只输出了第一行的order_num和cust_id:

MySql必知必会实战练习(六)游标

  继续,接下来将循环检索数据,从第一行到最后一行:

drop procedure IF EXISTS processorders;
create procedure processorders(
    out numbers int,
    out custid int
)
begin
    declare done boolean default 0;
    #声明游标
    declare ordernums cursor
    for
    select order_num,cust_id from orders;
    
    #声明CONTINUE HANDLER
    declare CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;     
    #打开游标
    open ordernums;
    
    #开始循环
    REPEAT
        #用来检索当前行的order_num(自动从第一行开始)
        fetch ordernums into numbers, custid;  
        
 #.....这里可以对每次检索出来的数据进行处理
        
    #结束循环
    UNTIL done END REPEAT;
    
    #关闭游标
    close ordernums;
end;

call processorders(@numbers,@custid);
select @numbers,@custid;

   我们会看出输出最后一行的order_num和cust_id

MySql必知必会实战练习(六)游标

  这样就实现了数据的循环检索,我们可以在 (#…..这里可以对每次检索出来的数据进行处理)注释处对每次检索出来的数据进行处理

  注意:上面我们定义了一个COUNtINUE HANDLEr,它是在条件出现时执行的代码,它指出SQLSTATE ‘02000’出现时set done = 1,最开始SQLSTATE ‘02000’是一个未找到的条件,只有当repeat没有更多的行供循环时才会出现SQLSTATE ‘02000’

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120050.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SpringBoot基础之MockMvc单元测试

    SpringBoot基础之MockMvc单元测试SpringBoot创建的Maven项目中,会默认添加spring-boot-starter-test依赖。在《5分钟快速上手SpringBoot》中编写的单元测试使用了MockMvc。本篇文章就围绕MockMvc在SpringBoot中的使用进行讲解。什么是Mock在面向对象的程序设计中,模拟对象(英语:mockobject)是以可控的方式模拟真实对象行为的假对象。在编程过程中,通常通过模…

    2025年8月18日
    2
  • Rancher Fleet使用教程

    Rancher Fleet使用教程Rancherfleet介绍https://fleet.rancher.io/https://github.com/rancher/fleet博客截止日期为:20201204当前官网版本为v0.3.0,但在实践中发现此版本使用私有仓库无法正常工作,更新为v0.3.1可正常使用;有一些官方文档说的不清楚的地方,在这篇博客中进行了完善;fleet是一个轻量级的gitops工具,不管是管理单个集群还是大量集群都有很好的性能;两段pull工作模式:Fleetmanagerpullfr

    2022年6月14日
    57
  • cURL error 60: SSL certificate problem…

    cURL error 60: SSL certificate problem…

    2021年10月25日
    46
  • Win下tomcat宕机自启vbs脚本[通俗易懂]

    Win下tomcat宕机自启vbs脚本[通俗易懂]将此下面的代码保存到一个.txt文件中,然后将后缀名命名为.vbs,再然后双击运行即可。注意要修改的地方:1.检查tomcat是否挂掉的访问路径,即下面代码中的:http://localhost:8080?a="&now2.一定要先切到bat所在目录WshShell.CurrentDirectory="D:\ProgramFiles\apache-tomcat-9.0….

    2022年7月23日
    7
  • Leetcode 238 Product of Array Except Self 时间O(n)和空间O(1)解法

    Leetcode 238 Product of Array Except Self 时间O(n)和空间O(1)解法

    2022年1月30日
    36
  • C语言之malloc函数「建议收藏」

    C语言之malloc函数「建议收藏」【FROMMSDN&&百科】原型:  void*malloc(unsignedintsize);#include或#includemalloc的全称是memoryallocation,中文叫动态内存分配,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。malloc向系统申请分配指定size个字节的内存空间(连

    2022年5月26日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号