今天用存储过程将一个表中的某几列的数据导入到另一张表中时候遇到一个问题,操作游标时候总是发现最后一行被多插入了一次,这是个常见问题了,原因就是当你发现not found data时候才set标志位=1的,这是until done=1还不能终止循环,直到下次循环进入done被设置为1,才终止循环,所以多循环了一次,我写在博客里面记录一下,方便大家。注意红色部分。
BEGIN
declare _id int;
declare _ad_id int;
declare _middle_page_id int;
declare _state tinyint;
declare _type tinyint;
declare _description varchar(255);
declare _start_time datetime;
declare _end_time datetime;
declare _offapp tinyint;
declare done int default 0;
declare cur cursor for select id,ad_id,middle_page_id,state,type,description,start_time,end_time,offapp from ap_ad_app;
declare continue handler for not found set done = 1;
open cur;
repeat
fetch cur into _id,_ad_id,_middle_page_id,_state,_type,_description,_start_time,_end_time,_offapp;
/*将数据insert到ap_aditem_ad*/
[color=red]if done <> 1 then[/color]
insert into ap_aditem_ad(aditem_id,ad_id,middle_page_id,state,type,description,start_time,end_time,offapp,create_time,update_time)
values(_id,_ad_id,_middle_page_id,_state,_type,_description,_start_time,_end_time,_offapp,now(),now());
end if;
until done=1
end repeat;
close cur;
END
分享到:
相关推荐
Mysql存储过程游标触发器
在“mysql存储过程_游标_项目练习”中,我们可能需要完成以下任务: 1. 创建存储过程:编写SQL语句来定义一个存储过程,包括输入参数(如果需要的话)、处理逻辑以及返回值(可选)。 2. 使用游标:在存储过程中...
"Oracle存储过程游标详解" Oracle 存储过程游标是指在 Oracle 数据库中使用游标来实现对结果集的处理和操作。游标可以分为静态游标和REF游标两种类型。静态游标是指结果集已经确实(静态定义)的游标,可以进一步...
在MySQL中,游标是一种数据库对象,主要用于处理存储过程中的结果集。游标允许我们逐行地读取查询结果,这对于需要对每一行数据执行特定操作的情况非常有用。通过使用游标,我们可以实现更加灵活的数据处理逻辑。 #...
mysql存储过程 多个游标循环(依次执行,非嵌套循环)REPEAT循环。有需要的可自行下载。
总结来说,这个示例展示了如何在MySQL存储过程中使用游标进行循环处理,并在循环内部再次嵌套游标以实现更精细的数据操作。这种技术在处理大量数据或执行复杂逻辑时非常有用,尤其是在需要逐行检查和处理数据的情况...
总结来说,MySQL存储过程中的游标和循环机制提供了强大的数据处理能力。通过游标,我们可以逐行处理数据,结合循环结构,能够灵活地实现复杂的数据操作逻辑。在实际应用中,这些工具常用于批量插入、更新、计算统计...
根据提供的文件信息,本文将详细解释一个MySQL存储过程的例子,其中包含了游标的使用。这个存储过程主要用于处理一批数据,涉及到日期范围内的数据处理、异常处理等。下面将逐一解析存储过程中涉及的重要知识点。 #...
本文实例讲述了mysql存储过程之返回多个值的方法。分享给大家供大家参考,具体如下: mysql存储函数只返回一个值。要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程。咱们先来看一个orders表它的...
MySQL中的动态游标是数据库处理过程中非常有用的一个特性,它允许在存储过程中逐行处理查询结果。在本示例中,我们将深入探讨如何在MySQL中使用动态游标,特别是结合存储过程来实现这一功能。 首先,创建了一个名为...
本篇文章将详细讨论在MySQL存储过程中如何使用游标循环,并特别关注如何进行跳出和继续操作。 首先,游标循环通常有三种基本形式:`LOOP`、`REPEAT`和`WHILE`。每种循环结构都有其特定的语法和用途,但核心思想都是...
MySQL 存储过程与游标的混合使用,也没啥重要的,就是和其他数据库有一些不同而已,作为总结,以后复习
Mysql存储过程、游标、函数调用、事务处理、触发器代码示例,可用作学习参考。
MySql存储过程,游标的使用方法,速度极快!
本资源结合实例实现一个复杂的存储过程,存储过程中有用到游标、临时表、循环、递归等知识,sql文件附有实例数据表创建的sql语句。
除了基础的游标操作,MySQL还支持其他特性,如:嵌套游标(一个游标内部使用另一个游标)、可滚动游标(允许向前和向后移动)以及隐式游标(无需显式声明,常在存储过程中使用)。 在实际应用中,游标常常用于以下...
MySQL 从 5.0 版本开始支持存储过程和触发器,而游标在递归树结构中非常有用。游标是 MySQL 中的一种机制,允许开发人员在存储过程和触发器中控制数据的获取和处理。 在 MySQL 中,游标是通过 DECLARE 语句定义的,...
总的来说,通过学习“mysql经典教程+mysql存储过程讲解”,你不仅可以掌握MySQL的基础操作,还能深入了解如何利用存储过程、触发器和游标来实现更复杂的数据管理策略。这将有助于你成为一名更高效的数据库管理员或...