浏览 2659 次
锁定老帖子 主题:解决MYSQL 游标最后一行重复
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-07-18
后来在发现应该把读取到的数据放在下一个循环里面使用可以避免重复 代码如下: 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; 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |