在使用游标时,发现最后一行一直被重复读取
后来在发现应该把读取到的数据放在下一个循环里面使用可以避免重复
代码如下:
DELIMITER $$
USE `test`$$
DROP PROCEDURE IF EXISTS `sp_getAllTableName`$$
CREATE PROCEDURE `sp_getAllTableName`(OUT strAllTableNames VARCHAR(10000))
BEGIN
DECLARE bEnd BOOLEAN DEFAULT FALSE;
DECLARE tbName VARCHAR(255);
# 声明游标
DECLARE curTableNames CURSOR FOR SELECT TABLE_NAME FROM information_schema.tables AS t WHERE t.table_schema="test";
# DECLARE CONTINUE HANDLER
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET bEnd=TRUE;
SET strAllTableNames = "";
# 打开游标
OPEN curTableNames;
# 获取所有行数据
# 获取第一行内容
FETCH curTableNames INTO tbName;
# 循环开始
REPEAT
SET strAllTableNames = CONCAT(strAllTableNames,tbName,";");
# 获取下一行内容
FETCH curTableNames INTO tbName;
# 循环结束
UNTIL bEnd END REPEAT;
# 关闭游标
CLOSE curTableNames;
# 处理完毕
SET strAllTableNames = CONCAT("All table names:",strAllTableNames);
END$$
DELIMITER ;
CALL test.sp_getAllTableName(@allNames);
SELECT @allNames;
后来在发现应该把读取到的数据放在下一个循环里面使用可以避免重复
代码如下:
DELIMITER $$
USE `test`$$
DROP PROCEDURE IF EXISTS `sp_getAllTableName`$$
CREATE PROCEDURE `sp_getAllTableName`(OUT strAllTableNames VARCHAR(10000))
BEGIN
DECLARE bEnd BOOLEAN DEFAULT FALSE;
DECLARE tbName VARCHAR(255);
# 声明游标
DECLARE curTableNames CURSOR FOR SELECT TABLE_NAME FROM information_schema.tables AS t WHERE t.table_schema="test";
# DECLARE CONTINUE HANDLER
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET bEnd=TRUE;
SET strAllTableNames = "";
# 打开游标
OPEN curTableNames;
# 获取所有行数据
# 获取第一行内容
FETCH curTableNames INTO tbName;
# 循环开始
REPEAT
SET strAllTableNames = CONCAT(strAllTableNames,tbName,";");
# 获取下一行内容
FETCH curTableNames INTO tbName;
# 循环结束
UNTIL bEnd END REPEAT;
# 关闭游标
CLOSE curTableNames;
# 处理完毕
SET strAllTableNames = CONCAT("All table names:",strAllTableNames);
END$$
DELIMITER ;
CALL test.sp_getAllTableName(@allNames);
SELECT @allNames;
发表评论
-
linux清除mysql占用cache
2013-11-01 10:55 2002在linux内部将cache分为2种: 1、write/rea ... -
规范、经验
2013-11-04 17:23 557尽量不用NULL列 query cach ... -
mysql模拟队列
2013-05-14 13:42 1067-- 初始化数据 DROP TABLE IF EXIST ... -
高性能mysql[第3版]--笔记
2013-05-03 23:35 06.8 6.8.1 mysql构建消息队列 se ... -
生成随机字符串
2013-04-30 10:41 0DELIMITER $$ CREATE FUNCTIO ... -
复制笔记
2013-04-27 17:48 0http://dev.mysql.com/doc/refman ... -
[整理]mysql导入导出
2013-04-24 22:40 0方案一:拷贝物理文件(innodb, innodb_file_ ... -
【整理中】mysql字符集使用
2013-04-24 22:29 0show variables like 'characte ... -
MYSQL监控内容整理
2013-04-24 13:40 0内容 硬解析,软解析,等待事件,表空间,索引,触发器,alte ... -
无限级联分类查询
2013-04-24 09:36 0DROP TABLE IF EXISTS location ... -
mysqldbcompare --使用
2013-04-07 09:39 0http://dev.mysql.com/doc/workbe ... -
MYSQL 发送数据大小计算公式
2013-03-29 16:20 860引用:http://www.realzyy.com/?p=15 ... -
#mysql 笔记#索引长度限制
2013-03-18 12:11 830http://dev.mysql.com/doc/refman ... -
mysqldump简单使用
2013-01-21 15:27 0mysqldump -B或者--databases:备份指定数 ... -
linux经常登入登出mysql重复输入密码
2013-01-16 17:51 943经常登入、登出mysql,尤其是密码重新输入比较复杂时,使用& ... -
mysql存储过程实现行转列
2012-08-30 16:24 2112把表t_rows中的数据转换 ... -
mysql 判断字符串是否是数字
2012-07-12 10:21 2924查询表table_name中col_name(字符串类型)的值 ... -
[转载]drop 大表效率问题
2012-06-15 09:32 46http://www.mysqlops.com/2011/05 ... -
monyog安装文件
2012-03-26 16:29 1234monyog安装包,绿色版 -
linux sysbench+mysql
2012-02-16 17:25 0一、sysbench安装 tar -zxvf ...
相关推荐
游标允许应用程序对查询语句select 返回的行结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作; 它还提供对基于游标位置而对表中数据进行删除或更新的能力 缺点: 处理大数据量时,效率...
主键是表中的一列或一组列,用于唯一标识表中的每一行。 5. 什么是外键? 外键是表中的一列,用于建立与其他表的关联。 6. 什么是索引? 索引是一种数据结构,用于加快数据库的查询速度。 7. 什么是事务? 事务是...
2.7.3 每次读取一行数据:fgets()、fgetss()和fgetcsv() 2.7.4 读取整个文件:readfile()、fpassthru()和file() 2.7.5 读取一个字符:fgetc() 2.7.6 读取任意长度:fread() 2.8 使用其他有用的文件函数 2.8.1 ...
2.7.3 每次读取一行数据:fgets()、fgetss()和fgetcsv() 2.7.4 读取整个文件:readfile()、fpassthru()和file() 2.7.5 读取一个字符:fgetc() 2.7.6 读取任意长度:fread() 2.8 使用其他有用的文件函数 2.8.1 查看...
2.7.3 每次读取一行数据:fgets()、fgetss()和fgetcsv() 2.7.4 读取整个文件:readfile()、fpassthru()和file() 2.7.5 读取一个字符:fgetc() 2.7.6 读取任意长度:fread() 2.8 使用其他有用的文件函数 2.8.1 ...
MySQL会给唯一约束的列上默认创建一个唯一索引; create table temp ( id int not null, name varchar(25), password varchar(16), --使用表级约束语法, constraint uk_name_pwd unique(name, password) ); 表示...
在 符号后输入的所有字符都应该是前一行的内容。 说明:给出上下文讨论中比较重要的信息。 提示:为某任务给出建议或一种更简单的方法。 注意:提醒可能出现的问题,避免出现事故。 新术语,提供新...
43、删除重复数据只保留一条。 55 44、一个几千万数据,发现数据查询很慢,怎么办? 55 六、Java高级部分 56 1、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用...
记录,也被成为一行数据,是表里的每一行 1.4 完整性的约束条件 1.4.1 实体完整性 关系模型的实体完整性在create table中用primary key约束实现,primary key约束用于定义主键,它保证主键的唯一性和非空性。 1.4.2 ...
我在讲义的最后面附有 GPL 的 非官方中文译稿。目前 Linux 中国的发行版本(Linux Distribution)主要有 Red Hat (红帽子) , Slackware, Caldera, Debian, Red Flag (红旗) , Blue Point (蓝点) , Xteam ...
7.15 打印数据库游标的内容 304 7.16 适用于各种DB API模块的单参数传递风格 306 7.17 通过ADO使用Microsoft Jet 308 7.18 从Jython Servlet访问JDBC数据库 310 7.19 通过Jython和ODBC获得Excel数据 313 第8章...
3. 运行该批处理程序将自动完成oracle卸载工作,最后手动删除\app文件夹(可能需要重启才能删除) 4. 运行regedit命令,打开注册表窗口。删除注册表中与Oracle相关的内容,具体如下: 删除HKEY_LOCAL_MACHINE/...
重复的行..... 92 14.2.4 对组合查询 结果排序..... 93 14.3 小结..... 94 第15章 插入数据...... 95 15.1 数据插入..... 95 15.1.1 插入完整的行..... 95 15.1.2 插入部分行..... 98 15.1.3 插入检索出 的数据.......