首页 / MYSQL / 游标的作用及属性介绍
游标的作用及属性介绍
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了游标的作用及属性介绍,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2389字,纯文字阅读大概需要4分钟。
内容图文
![游标的作用及属性介绍](/upload/InfoBanner/zyjiaocheng/538/6c935af381a3468bb76e389ead059715.jpg)
游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行相应的操作;游标有下面这些属性:
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 可以复制字段属性
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;
-- 关闭游标
CLOSE cur;
END
后来又将这个分表策略应用到一个oracle项目,附上代码
DECLARE cursor my_cursors is select DISTINCT to_char(ctime,'yyyymmdd') as ctime from NTGIS_GPS_EVENTDATA; mcursor varchar2(40); begin for mcursor in my_cursors loop DECLARE tbname VARCHAR2(50) := 'NTGIS_GPS_EVENTDATA'||mcursor.ctime; sqlstr VARCHAR2(300) := 'CREATE TABLE '||tbname||' as SELECT * from NTGIS_GPS_EVENTDATA where to_char(ctime,''yyyymmdd'')='''||mcursor.ctime||''''; BEGIN --dbms_output.put_line(tbname); execute immediate sqlstr; END; end loop; end;
以上就是游标的作用及属性介绍的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是互联网集市为您收集整理的游标的作用及属性介绍全部内容,希望文章能够帮你解决游标的作用及属性介绍所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。