在使用MySQL游标时,发现最后一行一直被重复读取 后来在发现应该把读取到的数据放在下一个循环里面使用可以避免重复 代码如下:
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; 设置CentOS下开机自动启动Oracle如何在开启了log-bin的MySQL Server中创建FUNCTION相关资讯 MySQL教程
- 30分钟带你快速入门MySQL教程 (02月03日)
- MySQL教程:关于I/O内存方面的一些 (01月24日)
- CentOS上开启MySQL远程访问权限 (01/29/2013 10:58:40)
| - MySQL教程:关于checkpoint机制 (01月24日)
- MySQL::Sandbox (04/14/2013 08:03:38)
- 生产环境MySQL 5.5.x单机多实例配 (11/02/2012 21:02:36)
|
本文评论 查看全部评论 (0)