游标的作用及属性介绍


本文摘自PHP中文网,作者rayZ,侵删。

游标的作用及属性

游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行相应的操作;游标有下面这些属性:

a、游标是只读的,也就是不能更新它;

b、游标是不能滚动的,也就是只能在一个方向上进行遍历,不能在记录之间随意进退,不能跳过某些记录;

c、避免在已经打开游标的表上更新数据。

实现功能,将数据量比较大的nt_m_gpsdata(3000W+),按日期拆分成如nt_m_gpsdata20170501,nt_m_gpsdata20170502,nt_m_gpsdata20170503等

CREATE PROCEDURE `new_procedure` ()

BEGIN

-- 需要定义接收游标数据的变量

DECLARE a CHAR(16);

-- 定义新建表名

DECLARE tbname CHAR(30);

-- 定义存放sql语句的变量

DECLARE sqlstr1 varchar(300);

DECLARE sqlstr2 varchar(300);

-- 遍历数据结束标志

DECLARE done INT DEFAULT FALSE;

-- 定义游标

DECLARE cur CURSOR FOR select DISTINCT DATE_FORMAT(ctime,'%Y%m%d') as ctime from nt_m_gpsdata;

-- 将结束标志绑定到游标

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

-- 打开游标

OPEN cur;

-- 开始循环

read_loop: LOOP

-- 提取游标里的数据,这里只有一个,多个的话也一样;

FETCH cur INTO a;

-- 声明结束的时候

IF done THEN

LEAVE read_loop;

END IF;

-- 这里做你想做的循环的事件

set tbname=CONCAT("nt_m_gpsdata",a);

-- select tbname;

-- 复制表结构,create table newtable select * from oldtable where 1=2 只能复制表字段,无法复制字段主键、自增、非空等属性 create table newtable like oldtable 可以复制字段属性

1

2

3

4

5

6

7

8

9

10

set sqlstr1 = CONCAT("create table ",tbname," like nt_m_gpsdata");

    set sqlstr2 = CONCAT("insert into ",tbname," select * from nt_m_gpsdata where deleted=0 and DATE_FORMAT(ctime,'%Y%m%d')='",a,"'");

    set @firstsql = sqlstr1;

    PREPARE stmt1 FROM @firstsql;

    EXECUTE stmt1;

    DEALLOCATE PREPARE stmt1;

    set @secondsql = sqlstr2;

    PREPARE stmt2 FROM @secondsql;

    EXECUTE stmt2;

    DEALLOCATE PREPARE stmt2;

END LOOP;

阅读剩余部分

相关阅读 >>

mysql怎么查询有哪些用户

mysql服务维护笔记第12页

mysql数据库的字符编码问题

java最新版本连接mysql失败的解决过程

如何利用cmd连接本机mysql数据库

mysql适配器之pymysql的详细介绍

oracle 临时表空间sql语句的实现

关于mysql性能调优你必须了解的15个重要变量(小结)

mysql8.0.28安装配置图文教程

mysql查询函数之 为表和字段取别名

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...