概念

游标(Cursor)它使用户可逐行访问由SQL Server返回的结果集。 
使用游标(cursor)的一个主要的原因就是把集合操作转换成单个记录处理方式。

用SQL语言从数据库中检索数据后,结果放在内存的一块区域中,且结果往往是一个含有多个记录的集合。

游标机制允许用户在SQL server内逐行地访问这些记录,按照用户自己的意愿来显示和处理这些记录。

优点

1、允许程序对由查询语句select返回的行集合中的每一行执行相同或不同的操作,而不是对整个行集合执行同一个操作。

2、提供对基于游标位置的表中的行进行删除和更新的能力。

3、游标实际上作为面向集合的数据库管理系统(RDBMS)和面向行的程序设计之间的桥梁,使这两种处理方式通过游标沟通起来。

原理

游标就是把数据按照指定要求提取出相应的数据集,然后逐条进行数据处理。

使用游标的顺序

 声名游标、打开游标、读取数据、关闭游标、删除游标。

使用游标(cursor)

1.声明游标

DECLARE cursor_name CURSOR FOR select_statement
这个语句声明一个游标。也可以在子程序中定义多个游标,但是一个块中的每一个游标必须有唯一的名字。声明游标后也是单条操作的,但是不能用SELECT语句不能有INTO子句。

2. 游标OPEN语句

OPEN cursor_name       这个语句打开先前声明的游标。

3. 游标FETCH语句

FETCH cursor_name INTO var_name [, var_name] ...这个语句用指定的打开游标读取下一行(如果有下一行的话),并且前进游标指针。

4. 游标CLOSE语句

CLOSE cursor_name  这个语句关闭先前打开的游标。

特性

1,只读的,不能更新的。
2,不滚动的
3,不敏感的,不敏感意为服务器可以活不可以复制它的结果表

游标(cursor)必须在声明处理程序之前被声明,并且变量和条件必须在声明游标或处理程序之前被声明。

delimiter $$
create procedure pa(out sum bigint)
begin declare iii int; declare done int default 0;
# 1、游标的定义
declare c_person cursor for select id from randtable;
# 捕获系统抛出的 not found 错误,如果捕获到,将 done 设置为 1 相当于try异常
declare continue handler for not found set done=1;
set sum=0;
# 2、打开游标
open c_person; www:loop
# 3、使用游标
fetch c_person into iii;
# 如果发生异常
if done = 1 then leave www;
end if ; set sum = sum +iii ;
end loop ;
# 4、关闭游标
close c_person;
end $$
delimiter ; -- 调用
set @sum = 0;
call pa(@sum);
select @sum;

MySQL游标(cursor) 定义及使用的更多相关文章

  1. Mysql 游标的定义与使用方式

    创建游标: 首先在MySql中创建一张数据表: CREATE TABLE IF NOT EXISTS `store` (   `id` int(11) NOT NULL AUTO_INCREMENT, ...

  2. mysql 游标CURSOR

    FETCH cursor_works INTO num,provinceIDs,cityIDs,SourceID; 定义的变量值必须与 游标中的字段不同,一一对应 DECLARE cursor_wor ...

  3. mysql游标cursor与for循环

    delimiter // create procedure p2() begin declare row_id int DEFAULT 0; declare row_num int DEFAULT 0 ...

  4. MySql存储过程—7、游标(Cursor)

    |字号 订阅 1.游标的作用及属性 游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行相应的操作:游标有下面这些属性: a.游标是只读的,也就是不能更新它: b.游标是不能滚动的,也就是只能 ...

  5. MySql 游标定义时使用临时表

    参考:Re: Temp Table in Select of a Cursor 方法一: delimiter $$ create procedure test_temp() begin drop te ...

  6. SqlServer和MySQL游标学习

    一 sqlserver游标使用 /*** 游标的使用  讲了这个多游标的优点,现在我们就亲自来揭开游标的神秘的面纱.  使用游标的顺序: 声名游标.打开游标.读取数据.关闭游标.删除游标. 1.3.1 ...

  7. MySQL游标操作指南

    本篇文章是对MySQL游标的具体使用进行了详细的分析介绍,需要的朋友参考下   测试表 level  代码如下: create table test.level (name varchar(20)); ...

  8. MySQL游标的简单实践

    Q:为什么要使用游标? A: 在存储过程(或函数)中,如果某条select语句返回的结果集中只有1行,可以使用select into语句(上几篇博客有介绍到用法)来得到该行进行处理:如果结果集中有多行 ...

  9. mysql 游标 demo

    一.MySQL游标的概念 1.游标介绍 MySQL的游标(cursor)是一个重要的概念,通过查找资料与自己的理解,主要得出以下几点关于自己的理解. 有数据缓冲的思想:游标的设计是一种数据缓冲区的思想 ...

随机推荐

  1. my.宝石 --- --- ZC 收集

    1.         DT PT 头盔 太阳石 物理伤害+8     √     月亮石 物理防御+12     √ 武器 太阳石 物理伤害+8   √     舍利子 法术伤害+6         ...

  2. 转 Comparison of Red Hat and Oracle Linux kernel versions and release strings

    Originally derived from Red Hat Enterprise Linux (RHEL), Oracle Linux (OL) contains minor difference ...

  3. 转 使用utl_http获取某个http页面内容

    #########1.ACL详细解释: 11g 对于XDB  UTL_HTTP or others package 的权限管控进一步加强,如果需要使用到XDB 以下包 UTL_TCP, UTL_SMT ...

  4. shell代码模板

    批量ssh登录机器 #site_search_hosts 10.4.16.205,10.4.20.87,10.4.20.88,10.4.20.89,10.4.20.90,10.4.20.92,10.4 ...

  5. (转)总结Linux的chattr与lsattr命令详解

    PS:有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了.chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,不过现在生产绝大部分跑的li ...

  6. 深入理解C语言函数指针(转)

    本文转自:http://www.cnblogs.com/windlaughing/archive/2013/04/10/3012012.html 示例1: void myFun(int x); //声 ...

  7. Linux小知识(1): bash中执行数据库的相关操作

    工作中经常会遇到命令行操作数据库或登陆至其他服务器等情况,往往需要通过命令行进入相关的数据库或登陆至相关的服务器,再执行指令操作,因此有没有方法,在命令行或bash脚本中模拟进入数据库或登陆服务器操作 ...

  8. IIS_常见问题及解决方法

    配置错误 在唯一密钥属性“value”设置为“default.aspx”时,无法添加类型为“add”的重复集合项 配置文件 \\*******\web\web.config web.config中 & ...

  9. web前端兼容性整理+完善

    [技巧类] 1.对一些标签统一规范. 2.padding,marign,height,width 写好标准头 <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1 ...

  10. 连接字符串(web.config)

    data source=ip; initial catalog=db1; user id=sa; password=*** <connectionStrings> <add name ...