DELIMITER $$
USE `mydatabase`$$
DROP PROCEDURE IF EXISTS `updateA`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `updateA`()
BEGIN
DECLARE id INT ;
DECLARE STOP INT DEFAULT 0;
DECLARE cur CURSOR FOR SELECT a.id FROM a ;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET STOP=1;
OPEN cur;
FETCH cur INTO id ;
WHILE STOP <> 1 DO
-- 各种判断
CALL myProcs(id);
-- 读取下一行的数据
FETCH cur INTO id ;
END WHILE; -- 循环结束
CLOSE cur; -- 关闭游标
END$$
DELIMITER ;
DELIMITER $$
USE `mydatabase`$$
DROP PROCEDURE IF EXISTS `myProcs`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `myProcs`(IN MAIN_ID INT)
BEGIN
DECLARE ID INT ;
DECLARE brandId VARCHAR(255);
DECLARE l_find_pos INT;
DECLARE l_new_string VARCHAR(255);
DECLARE STOP INT DEFAULT 0;
DECLARE cur CURSOR FOR SELECT a.id ,aitem.brandId FROM a LEFT JOIN aitem ON a.id=aitem.aId WHERE a.id=MAIN_ID ;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET STOP=1;
SET l_new_string='';
OPEN cur;
FETCH cur INTO id,brandId;
WHILE STOP <> 1 DO
-- 各种判断
SET l_find_pos=INSTR(l_new_string,brandId);
IF (l_find_pos=0) THEN
SET l_new_string = CONCAT(brandId,',',l_new_string);
END IF;
-- 读取下一行的数据
FETCH cur INTO id,brandId;
END WHILE; -- 循环结束
CLOSE cur; -- 关闭游标
#SET ttt=l_new_string;
IF (LENGTH (l_new_string)>0) THEN
SET l_new_string = LEFT(l_new_string,LENGTH (l_new_string)-1);
END IF;
UPDATE a SET brandId = l_new_string WHERE a.id=MAIN_ID ;
END$$
DELIMITER ;
分享到:
相关推荐
loop 游标双层嵌套循环 创建临时表, 游标
MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列SQL语句并封装成一个可重复使用的单元,从而提高数据处理的效率和代码的复用性。本教程将深入探讨MySQL存储过程的创建、调用以及相关概念...
MySQL存储过程是数据库管理系统中的一个重要特性,它允许程序员或数据库管理员预先定义一组SQL语句,形成一个可重用...通过学习这个资料,你将能够熟练地创建、管理和优化MySQL存储过程,提升数据库管理的效率和质量。
存储过程嵌套 课程目标 1)理解 ——存储过程嵌套的概念; 2)掌握 —— 存储过程嵌套的使用; 存储过程嵌套 【例】 创建一个存储过程sell_insert(),作用是向Sell表中插入一行数据。创建另外一个存储过程sell_...
总结来说,这个示例展示了如何在MySQL存储过程中使用游标进行循环处理,并在循环内部再次嵌套游标以实现更精细的数据操作。这种技术在处理大量数据或执行复杂逻辑时非常有用,尤其是在需要逐行检查和处理数据的情况...
mysql存储过程,REPEAT+while 实现嵌套循环。循环内嵌套循环。
MySQL存储过程和函数是数据库管理中的重要组成部分,它们在数据处理和业务逻辑中扮演着核心角色。本篇文章将深入探讨这两个概念,以及它们在MySQL环境中的应用和差异。 首先,让我们了解一下存储过程。存储过程是一...
总结,中文版MySQL5之存储过程技术手册将详细阐述这些概念,并通过实例演示如何创建、调用和管理存储过程,帮助读者在实际工作中更好地利用MySQL的这一强大特性。无论你是数据库管理员还是开发人员,理解并掌握存储...
3. **嵌套存储过程**:MySQL5支持在存储过程中调用其他存储过程,这使得可以构建更复杂的数据处理逻辑,提高代码组织的层次性。 4. **异常处理**:通过`DECLARE`、`BEGIN...END`和`HANDLER`语句,MySQL5提供了错误...
MySQL存储过程是一种预编译的SQL代码集合,可以在需要...总结来说,这个例子展示了如何在MySQL中创建和使用存储过程,包括事务控制、参数传递、嵌套调用和游标的使用,是学习和理解MySQL存储过程功能的一个很好的实例。
同时,存储过程的权限管理也是很重要的,MySQL提供了GRANT和REVOKE语句来控制对存储过程的访问权限。 在实际应用中,存储过程常常用于数据的批量处理、事务处理、复杂查询优化等场景。例如,通过存储过程可以实现...
MySQL 5.0版本还引入了几个新特性,比如支持嵌套存储过程、游标和事务控制。嵌套存储过程允许在一个过程中调用另一个过程,增加了代码的模块化和复用性。游标则允许在过程内部逐行处理结果集,这对于迭代操作非常...
综上所述,MySQL存储过程作为一种强大的工具,在提高数据处理效率和增强数据库安全性方面发挥着重要作用。通过合理设计和运用存储过程,不仅可以简化复杂的业务逻辑,还能有效提升应用程序的整体性能。
10. **嵌套存储过程**:MySQL 5.0允许在一个存储过程中调用另一个存储过程,实现更复杂的逻辑结构。 通过了解和掌握这些特性,开发者能够更有效地利用MySQL 5.0存储过程来构建高效、可靠的数据库应用。提供的...