`

mysql 存储过程和 之间的嵌套

 
阅读更多
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 ;




分享到:
评论

相关推荐

    mysql存储过程双层嵌套

    loop 游标双层嵌套循环 创建临时表, 游标

    mysql存储过程教程

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列SQL语句并封装成一个可重复使用的单元,从而提高数据处理的效率和代码的复用性。本教程将深入探讨MySQL存储过程的创建、调用以及相关概念...

    MySQL 存储过程入门到精通

    MySQL存储过程是数据库管理系统中的一个重要特性,它允许程序员或数据库管理员预先定义一组SQL语句,形成一个可重用...通过学习这个资料,你将能够熟练地创建、管理和优化MySQL存储过程,提升数据库管理的效率和质量。

    MySQL数据库:存储过程嵌套.pptx

    存储过程嵌套 课程目标 1)理解 ——存储过程嵌套的概念; 2)掌握 —— 存储过程嵌套的使用; 存储过程嵌套 【例】 创建一个存储过程sell_insert(),作用是向Sell表中插入一行数据。创建另外一个存储过程sell_...

    Mysql存储过程循环内嵌套使用游标示例代码

    总结来说,这个示例展示了如何在MySQL存储过程中使用游标进行循环处理,并在循环内部再次嵌套游标以实现更精细的数据操作。这种技术在处理大量数据或执行复杂逻辑时非常有用,尤其是在需要逐行检查和处理数据的情况...

    mysql 存储过程嵌套循环demo

    mysql存储过程,REPEAT+while 实现嵌套循环。循环内嵌套循环。

    MySql存储过程和函数

    MySQL存储过程和函数是数据库管理中的重要组成部分,它们在数据处理和业务逻辑中扮演着核心角色。本篇文章将深入探讨这两个概念,以及它们在MySQL环境中的应用和差异。 首先,让我们了解一下存储过程。存储过程是一...

    中文版MySQL5之存储过程技术手册

    总结,中文版MySQL5之存储过程技术手册将详细阐述这些概念,并通过实例演示如何创建、调用和管理存储过程,帮助读者在实际工作中更好地利用MySQL的这一强大特性。无论你是数据库管理员还是开发人员,理解并掌握存储...

    MySQL5新特性之存储过程MySQL5新特性之存储过程

    3. **嵌套存储过程**:MySQL5支持在存储过程中调用其他存储过程,这使得可以构建更复杂的数据处理逻辑,提高代码组织的层次性。 4. **异常处理**:通过`DECLARE`、`BEGIN...END`和`HANDLER`语句,MySQL5提供了错误...

    MySQL存储过程例子(包含事务,输出参数,嵌套调用)

    MySQL存储过程是一种预编译的SQL代码集合,可以在需要...总结来说,这个例子展示了如何在MySQL中创建和使用存储过程,包括事务控制、参数传递、嵌套调用和游标的使用,是学习和理解MySQL存储过程功能的一个很好的实例。

    MySQL5.0存储过程

    同时,存储过程的权限管理也是很重要的,MySQL提供了GRANT和REVOKE语句来控制对存储过程的访问权限。 在实际应用中,存储过程常常用于数据的批量处理、事务处理、复杂查询优化等场景。例如,通过存储过程可以实现...

    MySQL 5.0存储过程

    MySQL 5.0版本还引入了几个新特性,比如支持嵌套存储过程、游标和事务控制。嵌套存储过程允许在一个过程中调用另一个过程,增加了代码的模块化和复用性。游标则允许在过程内部逐行处理结果集,这对于迭代操作非常...

    MySQL存储过程:数据库编程的高级艺术

    综上所述,MySQL存储过程作为一种强大的工具,在提高数据处理效率和增强数据库安全性方面发挥着重要作用。通过合理设计和运用存储过程,不仅可以简化复杂的业务逻辑,还能有效提升应用程序的整体性能。

    MySQL+5.0存储过程

    10. **嵌套存储过程**:MySQL 5.0允许在一个存储过程中调用另一个存储过程,实现更复杂的逻辑结构。 通过了解和掌握这些特性,开发者能够更有效地利用MySQL 5.0存储过程来构建高效、可靠的数据库应用。提供的...

Global site tag (gtag.js) - Google Analytics