我的游标理解

数据库游标游标概念

游标的一个常见用途就是保存查询结果,以便以后使用。游标的结果集是由Select语句产生,如果处理过程需要重复使用一个记录集,那么创建一次游标而重复使用若干次,比重复查询数据库要快的多。
其实游标让我想起了一个做过一个多人编辑csv文件的项目,这个项目落地的时候遇到了一个问题,就是同步编辑的覆盖和冲突问题。当时独立开辟的共享内存,将整个表格的内容刷进共享内存,每个人登陆之后所使用的的都是独立的空间,互不干涉。
但是这样也可能遇见写入同一行的问题。简单的来说,游标需要在内存中开辟一片空间去保存查询的视图。然后用游标去控制查询出表格的内容。‘’
举个例子 二维数组的调用,和游标的滑动就如出一辙了。
游标声明语句

DECLARE cursor_name CURSOR FOR select_statement

未查询,也未开辟空间
游标关闭语句

CLOSE cursor_name

打开游标

OPEN cursor_name

游标
Fetch语句

FETCH cursor_name INTO var_name [, var_name] ...

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

1、允许程序对由查询语句select返回的行集合中的每一行执行相同或不同的操作,而不是对整个行集合执行同一个操作。
2、提供对基于游标位置的表中的行进行删除和更新的能力。
3、游标实际上作为面向集合的数据库管理系统(RDBMS)和面向行的程序设计之间的桥梁,使这两种处理方式通过游标沟通起来。

游标测试:

CREATE PROCEDURE testCursor()
BEGIN
DECLARE sum INT;
DECLARE testcur cursor for select id from persons;
open testcur;
fetch testcur into sum;
SELECT CONCAT('显示数据',sum);
fetch testcur into sum;
SELECT CONCAT('显示数据',sum);
close testcur;
END

call testCursor()

具体的循环条件,参考存储过程
踩了很多坑,最坑的一个是游标只能在存储过程中写。其他部分无法写。
Fetch 相当于 for语言的next。

数据库的回顾到此结束。下一个专题讲解mybatis框架
下一周是Activity流的概念。
务求讲精每一个部分。想想很久以前,其实这些东西我也会。
代码员始终要记住,其实工具只是产生效益的一种加速工具。而脑子是永远能吃的好东西。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值