MySQL游标(cursor)定义及使用

这篇具有很好参考价值的文章主要介绍了MySQL游标(cursor)定义及使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提到MySQL游标,多半在存储过程中定义及使用。

以下说明摘自MySQL官网:

MySQL 支持存储程序中的游标。语法与嵌入式 SQL 中的一样。游标具有以下属性:

  • 不敏感:服务器可能会也可能不会复制其结果表
  • 只读:不可更新
  • 不可滚动:只能单向遍历,不能跳行

游标声明必须出现在处理程序声明之前以及变量和条件声明之后。

游标申明语法:

DECLARE cursor_name CURSOR FOR select_statement

cursor_name:定义的游标名称

select_statement:SQL查询语句

此语句声明一个游标并将其与 SELECT检索要由游标遍历的行的语句相关联。要稍后获取行,请使用FETCH语句。语句检索的列数 SELECT必须与语句中指定的输出变量数相匹配 FETCH。

该SELECT语句不能有INTO子句。

游标声明必须出现在处理程序声明之前以及变量和条件声明之后。

存储的程序可能包含多个游标声明,但在给定块中声明的每个游标必须具有唯一的名称。

对于通过 SHOW语句可用的信息,在许多情况下可以通过将游标与INFORMATION_SCHEMA表一起使用来获得等效信息。

Cursor FETCH语法:

FETCH [[NEXT] FROM] cursor_name INTO var_name [, var_name] ...

此语句获取与指定游标(必须打开)关联的语句的下一行 SELECT,并推进游标指针。如果存在一行,则提取的列存储在命名变量中。语句检索的列数 SELECT必须与语句中指定的输出变量数相匹配 FETCH。

如果没有更多行可用,则出现 No Data 条件,SQLSTATE value '02000'。要检测此条件,您可以为其(或条件)设置一个处理程序 NOT FOUND

请注意,另一个操作(例如 a SELECT或 another FETCH)也可能通过引发相同条件来导致处理程序执行。如果有必要区分哪个操作引发了条件,请将该操作放在它自己的 BEGIN ... END块中,以便它可以与它自己的处理程序相关联。

游标的开启及关闭,必须成对出现,语法:

open cursor_name;

close cursor_name;

定义一个游标的完整语法示例:

CREATE PROCEDURE curdemo(IN in_id varchar(32))
BEGIN
  DECLARE done INT DEFAULT FALSE;
  DECLARE a CHAR(16);
  DECLARE b, c INT;
  DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1 where id=in_id;
  DECLARE cur2 CURSOR FOR SELECT id,data FROM test.t2 where id=in_id;
  # 申明游标遍历结束的标记
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

  # 打开游标
  OPEN cur1;
  OPEN cur2;

  # 遍历游标
  read_loop: LOOP
    FETCH cur1 INTO a, b;
    FETCH cur2 INTO c;
    IF done THEN
      LEAVE read_loop;# 如果遍历结束,退出循环
    END IF;
    IF b < c THEN
      INSERT INTO test.t3 VALUES (a,b);
    ELSE
      INSERT INTO test.t3 VALUES (a,c);
    END IF;
  END LOOP;

  # 关闭游标
  CLOSE cur1;
  CLOSE cur2;
END;

写在最后的踩坑点:

1.申明游标时,必须定义一个完整的SQL查询语句。

MySQL官网游标(cursor)说明文章来源地址https://www.toymoban.com/news/detail-426902.html

到了这里,关于MySQL游标(cursor)定义及使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL的变量、流程控制与游标

    目录 1.变量的分类 1.系统变量的分类 1.1.二者关系 2.查看系统变量 3.修改系统变量的值 4.用户变量 4.1会话用户变量 1.变量声明与赋值 2.变量使用    4.2.局部变量 1.使用declare 声明   2.局部变量声明格式    3.局部变量赋值    4.变量使用    5.定义条件与处理程序 1.定义条

    2024年02月15日
    浏览(78)
  • 【⑰MySQL】 变量 | 循环 | 游标 | 处理程序

    ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL变量 | 循环 | 游标 | 处理程序的分享 ✨ 1. 变量 在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终的结果数据。 在 MySQL 数据库中,变量分为 系统变量 以及 用户自定义变量 。

    2024年02月09日
    浏览(30)
  • 玩转Mysql系列 - 第19篇:游标详解

    这是Mysql系列第19篇。 环境:mysql5.7.25,cmd命令中进行演示。 代码中被[]包含的表示可选,|符号分开的表示可选其一。 需求背景 当我们需要对一个select的查询结果进行遍历处理的时候,如何实现呢? 此时我们需要使用游标,通过游标的方式来遍历select查询的结果集,然后对

    2024年02月09日
    浏览(32)
  • mysql JDBC的三种查询(普通、流式、游标)

    使用JDBC向mysql发送查询时,有三种方式: 常规查询:JDBC驱动会阻塞的一次性读取全部查询的数据到 JVM 内存中,或者分页读取 流式查询:每次执行rs.next时会判断数据是否需要从mysql服务器获取,如果需要触发读取一批数据(可能n行)加载到 JVM 内存进行业务处理 游标查询:

    2024年02月08日
    浏览(42)
  • MySQL的多层SP中Cursor的m_max_cursor_index相关BUG分析

    在一次开发中在sp中使用多层cursor的时候想知道每层的 m_max_cursor_index 值分别是多少,以用来做后续开发。于是做了以下的试验,但是发现第一个level=2那层的 m_max_cursor_index 的值有点问题。 注:本次使用的MySQL数据库版本为最新的debug版本。 SQL语句示例: 首先查看上面的sp的

    2024年04月08日
    浏览(28)
  • 存储过程、触发器、游标、视图、自定义函数 字段类型、字段可空、统计字段、逻辑删除 权限系统数据库&无限极类别设计

    在数据库设计中,存储过程、触发器、游标、视图、自定义函数、字段类型、字段可空、统计字段、逻辑删除以及权限系统和无限级类别设计都是重要的概念。下面我将逐一解释这些概念,并提供相关的设计建议。 存储过程 (Stored Procedure) 定义 :存储过程是一组为了完成特定

    2024年03月09日
    浏览(87)
  • 【最详细教程Cursor】智能 AI 代码生成工具 Cursor 安装和使用介绍

    Cursor.so 是一个集成了 GPT-4 的国内直接可以访问的,优秀而强大的免费代码生成器,可以帮助你快速编写、编辑和讨论代码。 它支持多种编程语言,如 Python, Java, C#, JavaScript 等,并且可以根据你的输入和需求自动生成代码片段。 Cursor.so 还可以帮助你重构、理解和优化代码,

    2023年04月19日
    浏览(35)
  • 数据库实验 | 第5关:使用游标的存储过程

    本关任务: jdxx数据表有四个字段,分别是省份(sf)、城市(cs)、区县(qxmc)、街道(name)。 例如,查询天心区(qxmc)的所有字段的值结果如图所示 建立存储过程 tjdq(in sf varchar(10)) 输入省份的名称,将该省份所有城市的所有地区的 乡x、镇z和街道jd和其他的个数插入到数据表dqtj中。

    2023年04月23日
    浏览(27)
  • Cursor——自动编码神器!安装且使用教程

    官方gitHub网站 Cursor,是OpenAI研发的一款程序员辅助工具。 保留了Idea的代码风格,界面简洁,支持多种插件 支持Max,Linux,Windows系统 在工作区输入需求,可中文或者英文,即可快速生成相应需求实现代码 选择代码可进行分析代码,解读代码,帮助理解代码含义 根据与AI进行

    2024年02月16日
    浏览(38)
  • AI智能编程工具Cursor使用介绍

    为使用人工智能编程而构建的编辑器,一款 人工智能编程软件 、 智能Ai代码生成工具 。 它有什么特点呢? 集成了 GPT-4 ,国内可用,有强大的自动代码生成能力,可以说是为程序员量身打造。 它可以根据你的需求,自动生成代码,分析代码,优化代码,并可以基于某个代码

    2024年02月09日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包