`
haiyupeter
  • 浏览: 419454 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

mysql游标的应用

阅读更多

create procedure test(out d float)
begin
declare a,b int;
declare cur_1 cursor for select count(*) from sur_question;
DECLARE CONTINUE HANDLER for not found
set b = 1;
open cur_1;
  repeat
    fetch cur_1 into a;
    until b = 1
  end repeat;
close cur_1;
set d = a;
end



CREATE PROCEDURE p (OUT return_val INT)
BEGIN
DECLARE a,b INT;
DECLARE cur_1 CURSOR FOR SELECT count(*) from sur_question;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET b = 1;
OPEN cur_1;
REPEAT
FETCH cur_1 INTO a;
UNTIL b = 1
END REPEAT;
CLOSE cur_1;
SET return_val = a;
END;


 /*初始化*/ 
 drop procedure if exists  useCursor //    
 
 /*建立 存储过程 create */ 
 CREATE PROCEDURE useCursor()
    BEGIN
    /*局部变量的定义 declare*/ 
         declare tmpName varchar(20) default '' ;
         declare allName varchar(255) default '' ;
         
         declare cur1 CURSOR FOR SELECT name FROM test.level ;
         
         /*    mysql 不知道为什么用异常加入判断 ?
          *    此请参考官方文档 20.2.11. 光标 光标 
          *        这把 游标 异常后 捕捉 
          *        并设置 循环使用 变量 tmpname 为 null 跳出循环。
          */
         declare CONTINUE HANDLER FOR SQLSTATE '02000' SET tmpname = null;
    
    
    /*开游标*/ 
     OPEN cur1;
         /*游标向下走一步*/ 
         FETCH cur1 INTO tmpName;
         
         /* 循环体 这很明显 把游标查询出的 name 都加起并用 ; 号隔开 */
      WHILE ( tmpname is not null) DO
          set tmpName = CONCAT(tmpName ,";") ;
          set allName = CONCAT(allName ,tmpName) ;
        /*游标向下走一步*/ 
        FETCH cur1 INTO tmpName;
      END WHILE;
  
    CLOSE cur1;
    
    select allName ;
END;//
call useCursor()//
 

运行结果:
mysql> call useCursor()//
+--------------------------------------+
| allName                              |
+--------------------------------------+
| f1;c3;c6;c5;c2;c4;c1;f1;f3;f4;f2;f5; |
+--------------------------------------+
1 row in set (0.00 sec)

分享到:
评论

相关推荐

    sql总结.doc

    游标允许应用程序对查询语句select 返回的行结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作; 它还提供对基于游标位置而对表中数据进行删除或更新的能力 缺点: 处理大数据量时,效率...

    MYSQL数据库高级应用宝典含实例(索引、视图、触发器、游标和存储过程)

    MYSQL数据库高级应用宝典含实例(索引、视图、触发器、游标和存储过程)

    2021年MySQL高级教程视频.rar

    26.MySQL高级存储过程语法游标基本操作.avi 27.MySQL高级存储过程语法循环获取游标.avi 28.MySQL高级存储过程函数.avi 29.MySQL高级触发器介绍.avi 30.MySQL高级触发器创建及应用.avi └31.MySQL高级触发器查看及...

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    │ 2_MySQL游标讲解.mp4 │ 3_MySQL触发器.mp4 │ 4_MySQL触发器课堂强化练习.mp4 │ 5_MySQL数字和时间类型.mp4 │ 6_MySQL字符串类型.mp4 │ 7_MySQL存储引擎.mp4 │ 8_MySQL第三范式设计讲解.mp4 │ 9_MySQL...

    MySQL实验报告5(存储过程与函数)(1)(1).pdf

    MySQL实验报告5(存储过程与函数)(1)(1).pdf

    mysql第八章.pdf

    MySQL数据应用与开发第八章的内容,包括创建存储过程、利用游标处理结果集、创建事件、管理事件等知识。

    mysql数据库DB性能与优化笔记

    资源包括:mysql视图应用,mysql存储过程,mysql使用游标,mysql使用触发器,mysql事务管理处理,mysql访问控制,mysql数据优化及备份&索引。

    数据库原理及应用-第8章数据库编程.pdf

    交互式 嵌入式 引入嵌入式SQL原因 SQL语言是非过程性语言 事务处理应用需要高级语言 8.1 嵌入式SQL 8.1.1 嵌入式SQL的处理过程 8.1.2 嵌入式SQL语句与主语言之间的通信 8.1.3 不使用游标的SQL语句 8.1.4 使用游标的...

    mysql 存储过程应用(代码详解)

    详细介绍了mysql使用临时表实现强大的存储过程,怎样获得存储过程的返回值,使用了临时表,游标等方法。

    高性能MySQL(第3版).part2

    7.5游标283 7.6绑定变量284 7.6.1绑定变量的优化286 7.6.2SQL接口的绑定变量286 7.6.3绑定变量的限制288 7.7用户自定义函数289 7.8插件290 7.9字符集和校对291 7.9.1MySQL如何使用字符集292 7.9.2选择字符...

    mysql定时job

    mysql的定时job的一个简单应用,采用mysql存储过程的调用方式执行任务。该任务中涉及到使用游标来完成多个update执行过程。

    mysql第八章.doc

    MySQL数据应用与开发第八章的内容,包括创建存储过程、利用游标处理结果集、创建事件、管理事件等知识。

    常见(MySQL)面试题(含答案).docx

    数据库悲观锁和乐观锁的原理和应用场景? 如何做 MySQL 的性能优化? 索引是什么?MySQL为什么使用B+树,而不是使用其他?B+树的特点 创建索引时需要注意什么? CHAR和VARCHAR的区别? NOW()和CURRENT_DATE()有...

    MySQL 速成课程,第二版

    MySQL 是最流行的数据库管理系统之一,为从互联网巨头到个人企业数据库到简单的最终用户应用程序以及介于两者之间的一切提供支持。 本书将教您使用最新版本的 MySQL 立即提高工作效率所需了解的所有知识。 通过学习 ...

    PHP和MySQL Web开发第4版pdf以及源码

    13.5.3 游标和控制结构 13.6 进一步学习 13.7 下一章 第三篇 电子商务与安全性 第14章 运营一个电子商务网站 14.1 我们要实现什么目标 14.2 考虑电子商务网站的类型 14.2.1 使用在线说明书公布信息 14.2.2 ...

    PHP和MySQL WEB开发(第4版)

    13.5.3 游标和控制结构 13.6 进一步学习 13.7 下一章 第三篇 电子商务与安全性 第14章 运营一个电子商务网站 14.1 我们要实现什么目标 14.2 考虑电子商务网站的类型 14.2.1 使用在线说明书公布信息 14.2.2 接收产品...

    MySQL存储过程使用实例详解

    例1、一个简单存储过程游标实例 代码如下: DELIMITER $$ DROP PROCEDURE IF EXISTS getUserInfo $$CREATE PROCEDURE getUserInfo(in date_day datetime)— — 实例— 存储过程名为:getUserInfo— 参数为:date_day...

    PHP和MySQL Web开发第4版

    13.5.3 游标和控制结构 13.6 进一步学习 13.7 下一章 第三篇 电子商务与安全性 第14章 运营一个电子商务网站 14.1 我们要实现什么目标 14.2 考虑电子商务网站的类型 14.2.1 使用在线说明书公布信息 14.2.2 ...

Global site tag (gtag.js) - Google Analytics