原文:https://my.oschina.net/u/3582142/blog/1581929

delimiter $$ /* 重新定义mysql结束符,而不再是分号是结束符 */

create procedure mergeDeclare() /* 创建存储过程 */

BEGIN

/*定义局部变量*/

DECLARE id INT DEFAULT 0;

DECLARE Done INT DEFAULT 0;

DECLARE mobile VARCHAR(20);

DECLARE mobileTemp VARCHAR(20) DEFAULT '';

DECLARE maxId INT DEFAULT 0;

DECLARE t_error INTEGER DEFAULT 0;

DECLARE rs CURSOR FOR  /* 定义从mysql取数据的游标 */

/* 查出需要的数据 */

select

a.declare_id,a.user_mobile

from

declare_info a,

(select user_mobile from declare_info b where b.status=1 group by user_mobile having count(1)>1) b

where

a.user_mobile=b.user_mobile and a.status =1 and CHARACTER_LENGTH(a.user_mobile) =  11  ORDER BY a.user_mobile , a.declare_id DESC;

/* 当游标遍历完所有数据的时候,set Done的值为1 */

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

/* 当发生sql异常的时候set t_error的值为1 */

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;

/* 开启事务 */

START TRANSACTION;

/* 打开游标 */

OPEN rs;

/* 取游标当前的值,into后面是赋值的意思,被赋值变量的数目与sql查出来的字段数相等 */

FETCH NEXT FROM rs INTO id,mobile;

/* 在此处进行循环 */

REPEAT

IF NOT Done THEN

IF mobileTemp = mobile THEN

UPDATE farmer_certification_info set declare_id = maxId where declare_id = id;

UPDATE farmer_contact_info set declare_id = maxId where declare_id = id;

UPDATE farmer_industry_info set declare_id = maxId where declare_id = id;

UPDATE farmer_info set declare_id = maxId where declare_id = id;

UPDATE farmer_job_info set declare_id = maxId where declare_id = id;

UPDATE farmer_skill_info set declare_id = maxId where declare_id = id;

UPDATE training_class_user set declare_id = maxId where declare_id = id;

UPDATE training_class_evaluate set declare_id = maxId where declare_id = id;

UPDATE declare_info set `status`= 0 where declare_id = id;

ELSE

set mobileTemp = mobile;

set maxId = id;

END IF;

END IF;

IF t_error = 1 THEN

/* sql异常回滚 */

ROLLBACK;

ELSE

/* 提交事务 */

COMMIT;

END IF;

/* 向游标取出下一个值进行赋值 */

FETCH NEXT FROM rs INTO id,mobile;

/* 遍历完Done=1,结束遍历 */

UNTIL Done END REPEAT;

/*关闭游标*/

CLOSE rs;

END $$ /* 结束符,和开始定义的一致 */

/*

drop procedure mergeDeclare /* 删除存储过程 */

*/

/*

call mergeDeclare() /* 调用存储过程 */

*/

标注:存储过程没有容器和数据概念,但可新建表借助表当作一个容器使用。

mysql存储过程注释方法_mysql存储过程 详细注释相关推荐

  1. mysql 存储过程 定义数组_MySql存储过程

    Mysql进阶 存储过程 1 什么是存储过程 1.存储过程,带有逻辑的sql语句 2.之前的sql没有条件判断,没有循环 3.存储过程带上流程控制语句(if while) 2 存储过程特点 1)执行效 ...

  2. mysql 存储过程插入慢_mysql存储过程太慢怎么办

    mysql存储过程太慢的解决方法:首先打开my.cnf配置文件:然后添加配置[long_query_time=1]:接着通过[tail -f /tmp/logs/mysqld.log]命令监控sql: ...

  3. mysql存储过程 简书_MySQL存储过程

    在本节中,您将逐步学习如何在MySQL中编写和开发存储过程. 首先,我们向您介绍存储过程的概念,并讨论何时使用它. 然后,展示如何使用过程代码的基本元素,如创建存储过程的语句,if-else,case ...

  4. mysql 存储过程建表_MySQL 存储过程创建表

    创建 CREATE PROCEDURE  Pro_IsExistTable(ableName varchar(100),out outputParam int) BEGIN set @csql=con ...

  5. mysql 存储过程 out 用处_mysql存储过程 OUT or INOUT argument 3 for routine

    mysql存储过程出现: OUT or INOUT argument 3 for routine gotask.UserLogin is not a variable or NEW pseudo-va ...

  6. mysql存储过程list参数_mysql存储过程教程(1)

    MySQL存储过程 1.1         CREATE  PROCEDURE  (创建) CREATE PROCEDURE存储过程名(参数列表) BEGIN SQL语句代码块 END 注意: 由括号 ...

  7. c# mysql存储过程 输出参数值_MySQL 存储过程参数用法 in, out, inout

    MySQL 存储过程参数有三种类型:in.out.inout.它们各有什么作用和特点呢? 一.MySQL 存储过程参数(in) MySQL 存储过程 "in" 参数:跟 C 语言的 ...

  8. mysql的游标处理_mysql 存储过程、游标及逐行处理的配合使用

    1. 数据准备 +----+------+--------+ | id | name | price1 | +----+------+--------+ | 1 | 大米 | 5 | | 2 | 鸡蛋 ...

  9. mysql生活使用方法_MySQL Workbench使用教程

    MySQL Workbench 是一款专为 MySQL 设计的集成化桌面软件,也是下一代的可视化数据库设计.管理的工具,它同时有开源和商业化两个版本.该软件支持 Windows 和 Linux 系统, ...

最新文章

  1. 3.Excel数据透视表
  2. 电脑屏保海底世界_世界上最后一个深海实验室,隐藏了人类未来的秘密
  3. 修改这个新的伪原创工具列表
  4. 刷新认知!基因表达,男女有别|Science、Cell等发布15篇人类遗传调控新成果
  5. matlab编写全置信度函数,Matlab_curve_fitting_tool的用法图文结合
  6. java插件安装步骤_eclipse插件安装的四种方法
  7. 游戏王怪兽胶囊Android,游戏王怪兽胶囊GB是什么?
  8. CentOS安装完没有ip地址的解决方法
  9. 英文c语言笔试题,2010年3月计算机等考二级C语言笔试试题 附答案(国外英文资料).doc...
  10. Python爆破RAR密码
  11. 面试题:你印象最深刻的两个bug是什么,你是怎么解决的?
  12. 《星际迷航*:舰桥船员》与虚拟现实新趋势
  13. webview造成窗体泄漏
  14. 物理机安装linux系统
  15. 将一个32bit的数据,颠倒过来,bit0与bit31交换,bit1与bit30交换,C语言实现与verilog实现。
  16. 微信公众号自定义分享实现(开发者)
  17. [数模论文写作]模型的建立与求解
  18. Altium Designer之PCB库部分名称区分
  19. 计算机国培培训总结,国培培训总结范文(精选5篇)
  20. 汕尾市海陆丰民间开胃小食摘录

热门文章

  1. Linux下细碎温度等的监控与调整
  2. 日常小问题汇总(1)
  3. MFC随机博弈黑白棋
  4. 7-4 银行排队问题之单队列多窗口加VIP服务 (30 分)
  5. c语言银行卡管理系统程序设计报告,《c语言程序设计》课程设计报告-职工信息管理系统.doc...
  6. php获取外部URL,使用PHP从外部API / URL获取信息
  7. qt mysql 系统时间_使用QT和参数在SQLite数据库中插入日期时间
  8. matlab的三维伪彩图,matlab画等高线伪彩图
  9. hbase集群 数据写入_Hbase实用技巧:全量+增量数据的迁移方法
  10. win7 怎么干净删除php,window_win7系统如何删除注册表里面的垃圾文件?,win7系统如何删除注册表里面的 - phpStudy...