在使用MySQL游标时,发现最后一行一直被重复读取 后来在发现应该把读取到的数据放在下一个循环里面使用可以避免重复 代码如下:

首页 → 数据库技术
背景:
阅读新闻
解决mysql 游标最后一行重复
[日期:2011-07-20] 来源:Linux社区 作者:babaoqi [字体:]
在使用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;
Destoon B2B网站管理系统是一套完善的B2B(电子商务)行业门户解决方案。系统基于PHP+MySQL开发,采用B/S架构,模板与程序分离,源码开放。模型化的开发思路,可扩展或删除任何功能;创新的缓存技术与数据库设计,可负载千万级别数据容量及访问。 系统特性1、跨平台。支持Linux/Unix/Windows服务器,支持Apache/IIS/Zeus等2、跨浏览器。基于最新Web标准构建,在
2
# 获取所有行数据
# 获取第一行内容
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
Oracle Shared Pool优化思路
相关资讯 MySQL教程
图片资讯
本文评论 查看全部评论 (0)
评论声明
最新资讯
本周热门
Linux公社简介 - 广告服务 - 网站地图 - 帮助信息 - 联系我们
本站(LinuxIDC)所刊载文章不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。
Copyright © 2006-2011 Linux公社 All rights reserved 浙ICP备06018118号
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号