`
collegeyuan
  • 浏览: 30965 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

mysql存储过程,用游标遍历表数据

 
阅读更多

BEGIN

#Routine body goes here...

DECLARE nidCode varchar(50);

DECLARE m smallint(2);

DECLARE e smallint(2);

DECLARE p smallint(2);

DECLARE j smallint(6);

DECLARE x smallint(6);

DECLARE jpushpage varchar(32);

 

#渠道

DECLARE channels VARCHAR(20) default '';

DECLARE smsC VARCHAR(20)  default 'sms';

DECLARE smsCD VARCHAR(20)  default ',sms';

DECLARE emailC VARCHAR(20)  default 'email';

DECLARE emailCD VARCHAR(20)  default ',email';

 

DECLARE sysC VARCHAR(20)  default 'sys';

DECLARE sysD VARCHAR(20)  default ',sys';

 

DECLARE jpushC VARCHAR(20)  default 'jpush';

DECLARE jpushCD VARCHAR(20)  default ',jpush';

 

DECLARE xgC VARCHAR(20) default 'xg';

DECLARE xgCD VARCHAR(20) default ',xg';

 

#t_message_template中是否存在nid的记录

DECLARE cnt int default 0;

#总共修改了message.t_message_template几条记录

DECLARE modifyCount int default 0;

 

#这个用于处理游标到达最后一行的情况  

DECLARE s int default 0;

 

#声明游标cursor_name(cursor_name是个多行结果集)  

DECLARE cursor_name CURSOR FOR select nid,message,email,phone,jpush,xg,jpush_page from ucdai.yyd_remind;  

 

#设置一个终止标记   

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET s=1;  

 

#打开游标  

OPEN cursor_name; 

 

#获取游标当前指针的记录,读取一行数据并传给变量a,b 

fetch  cursor_name into nidCode,m,e,p,j,x,jpushpage ;  

set modifyCount = 0;

 

#开始循环,判断是否游标已经到达了最后作为循环条件   

while s <> 1 do  

 

            

set channels = '';

#系统消息

if m =1 || m=3 THEN

if channels = '' THEN

set channels = concat(channels,sysC);

else

set channels = concat(channels,sysCD);

end if;

end if;

#email

if e=1 || e=3 THEN

if channels = '' THEN

set channels = concat(channels,emailC);

else

set channels = concat(channels,emailCD);

end if;

end if;

#sms

if p=1 || p=3 THEN

if channels = '' THEN

set channels = concat(channels,smsC);

else

set channels = concat(channels,smsCD);

end if;

end if;

#jpush

if j=1 || j=3 THEN

if channels = '' THEN

set channels = concat(channels,jpushC);

else

set channels = concat(channels,jpushCD);

end if;

end if;

#xg

if x=1 || x=3 THEN

if channels = '' THEN

set channels = concat(channels,xgC);

else

set channels = concat(channels,xgCD);

end if;

end if;

 

#set nidCode = '41';

select count(*) into cnt from t_message_template where nid = nidCode;

#SELECT cnt;

if cnt > 0 THEN

update t_message_template set channel = channels,jpush_page= jpushpage,UPDATE_TIME =SYSDATE() where nid= nidCode;

set modifyCount = modifyCount + cnt;

end if;

 

#读取下一行的数据  

           fetch  cursor_name into nidCode,m,e,p,j,x,jpushpage;  

            

  end while;  

                   

  #关闭游标  

  CLOSE cursor_name ;  

select modifyCount;

   

END

分享到:
评论

相关推荐

    mysql存储过程_游标_项目练习

    在MySQL中,游标通常与存储过程配合使用,使我们能够根据需要在结果集中向前或向后移动,实现逐行处理数据,这在动态或条件性的数据处理中尤为关键。 在“mysql存储过程_游标_项目练习”中,我们可能需要完成以下...

    Mysql存储过程游标触发器

    Mysql存储过程游标触发器

    SQL Server遍历表中记录的2种方法(使用表变量和游标)

    在SQL Server中,遍历表中的记录是数据库操作中常见的一种任务,特别是在处理逐行处理数据或执行复杂逻辑时。本文将深入探讨两种方法:使用表变量和使用游标。 首先,我们来看如何通过表变量来遍历记录。表变量在...

    MySQL 存储过程与游标的混合使用

    MySQL 存储过程与游标的混合使用,也没啥重要的,就是和其他数据库有一些不同而已,作为总结,以后复习

    sql存储过程和游标的运用

    SQL存储过程和游标是SQL语言中两个非常重要的概念,它们可以帮助开发者更好地管理和处理数据。在本节中,我们将详细介绍存储过程和游标的基本概念和应用。 什么是存储过程 存储过程是一个预编译的SQL语句集合,它...

    Mysql存储过程、游标、函数调用、事务处理、触发器代码示例

    Mysql存储过程、游标、函数调用、事务处理、触发器代码示例,可用作学习参考。

    Oracle存储过程、游标、函数的详解

    通过以上对Oracle存储过程、游标和函数的详细介绍,我们可以看到这些特性为Oracle数据库提供了一种强大而灵活的方式来处理数据。掌握这些技术对于开发高效的应用程序至关重要。在未来的学习和实践中,我们应该不断...

    存储过程和游标

    以上示例展示了如何使用SQL语言中的存储过程和游标功能来实现特定的数据处理任务。通过这两个示例,我们可以看到存储过程的灵活性以及游标处理多行数据的强大能力。这些技术在实际开发中非常有用,能够帮助开发者更...

    Mysql游标(循环操作)

    在MySQL中,游标是一种数据库对象,主要用于处理存储过程中的结果集。游标允许我们逐行地读取查询结果,这对于需要对每一行数据执行特定操作的情况非常有用。通过使用游标,我们可以实现更加灵活的数据处理逻辑。 #...

    SQL SERVER中的存储过程和游标的使用大综合

    下面是一个简单的游标示例,用于遍历表中的每一行并打印数据: ```sql DECLARE @id INT, @name VARCHAR(50); DECLARE myCursor CURSOR FOR SELECT ID, Name FROM Employees; OPEN myCursor; FETCH NEXT FROM ...

    存储过程触发器 游标

    本文将深入探讨存储过程、触发器和游标,以及它们在实际应用中的综合使用。 首先,让我们来理解存储过程。存储过程是预编译的SQL语句集合,它封装了一系列数据库操作并在需要时执行。这种高级的SQL构造可以提高性能...

    存储过程游标用于批量的插入数据

    ### 存储过程与游标的综合应用:批量插入数据 #### 一、存储过程简介 在数据库管理系统(DBMS)中,存储过程是一种预编译的SQL代码块,它可以接受输入参数并返回输出值,类似于编程语言中的函数或过程。通过创建...

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

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

    MySQL存储过程中游标循环的跳出和继续操作示例

    最近遇到这样的问题,在MySQL的存储过程中,游标操作时,需要执行一个conitnue的操作.众所周知,MySQL中的游标循环操作常用的有三种,LOOP,REPEAT,WHILE.三种循环,方式大同小异.以前从没用过,所以记下来,方便以后查阅. 1....

    oracle存储过程返回游标数据集

    存储过程中通过返回数据集,通过游标方式实现,以及在java中如何接收的整个过程

    oracle存储过程使用游标对多表操作例子

    标题:“oracle存储过程使用游标对多表操作例子”直接指出了文章的主题是关于在Oracle环境下,如何利用存储过程和游标实现跨多个表的数据处理。描述部分重复了标题内容,强调了示例性质,表明文章将通过具体实例来...

    Oracle存储过程out游标

    在这个场景中,我们有三个文件:TESTPACKAGE.txt,CURSOR_TEST2.txt和OracleProcedure.java,分别涉及Oracle存储过程的创建、游标的使用以及Java代码如何与Oracle存储过程交互。 首先,`TESTPACKAGE.txt`很可能包含...

Global site tag (gtag.js) - Google Analytics