mysql存储过程使用游标循环插入数据
DELIMITER $$ DROP PROCEDURE IF EXISTS `procedure_course`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `topsale`.`procedure_course`() BEGIN DECLARE c_user_login_id VARCHAR(100); DECLARE done INT DEFAULT 0;
##1.定义游标stock_cursor 根据指定用户id
DECLARE stock_cursor CURSOR FOR SELECT ul.USER_LOGIN_ID FROM user_login ul WHERE ul.party_id='999' AND user_login_id='eric.zhang';##获取本部所有用户id DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; OPEN stock_cursor;##2.打开游标 cursor_loop: LOOP FETCH stock_cursor INTO c_user_login_id; ##3.提取游标 IF done=1 THEN
LEAVE cursor_loop;
END IF; CALL procedure_course_mapping(c_user_login_id); END LOOP cursor_loop;
CLOSE stock_cursor; ##关闭游标 END$$ DELIMITER ;
DELIMITER $$ USE `topsale`$$ DROP PROCEDURE IF EXISTS `procedure_course_mapping`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `procedure_course_mapping`(v_user_login VARCHAR(30))
BEGIN DECLARE c_msg_role_id VARCHAR(50);
DECLARE c_count VARCHAR(50); DECLARE done INT DEFAULT 0; DECLARE stock_cursor CURSOR FOR SELECT t.msg_role_id FROM training_course c,t_msg_text t WHERE c.course_id=t.course_id;##获取所有课件的msg_role_id DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; OPEN stock_cursor; cursor_loop: LOOP FETCH stock_cursor INTO c_msg_role_id;
IF done=1 THEN
LEAVE cursor_loop;
END IF; SELECT COUNT(*) INTO c_count FROM t_msg_mapping WHERE msg_role_id=c_msg_role_id AND user_login_id=v_user_login;
IF(c_count=0) THEN INSERT INTO t_msg_mapping(user_login_id,msg_role_id,msg_state) VALUES(v_user_login,c_msg_role_id,0); END IF; END LOOP cursor_loop;
CLOSE stock_cursor; END$$ DELIMITER ;
SELECT * FROM information_schema.events//获取所有事件
SET GLOBAL event_scheduler = 1;//开启事件状态,1为开始,0为未开启
SHOW VARIABLES LIKE 'event_scheduler';//显示事件是否开启
DELIMITER $$ USE `topsale`$$ DROP PROCEDURE IF EXISTS `procedure_course`$$ CREATE DEFINER=`top`@`%` PROCEDURE `procedure_course`()
BEGIN DECLARE c_user_login_id VARCHAR(); DECLARE done INT DEFAULT ;
##.定义游标stock_cursor 根据指定用户id
DECLARE stock_cursor CURSOR FOR SELECT ul.user_login_id FROM user_role_mapping urm,user_login ul WHERE ul.`USER_LOGIN_ID`=urm.`USER_LOGIN_ID` AND urm.`ROLE_ID` LIKE 'prom%';##获取prom所有用户id DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = ; OPEN stock_cursor;##.打开游标 cursor_loop: LOOP FETCH stock_cursor INTO c_user_login_id; ##.提取游标 IF done= THEN
LEAVE cursor_loop;
END IF; CALL procedure_del_msg_user(c_user_login_id); END LOOP cursor_loop;
CLOSE stock_cursor; ##关闭游标 END$$ DELIMITER ;
DELIMITER $$ USE `topsale`$$ DROP PROCEDURE IF EXISTS `procedure_del_msg_user`$$ CREATE DEFINER=`top`@`%` PROCEDURE `procedure_del_msg_user`(v_user_login VARCHAR())
BEGIN
DECLARE c_msg_role_id VARCHAR();
DECLARE c_count VARCHAR(); DECLARE done INT DEFAULT ; DECLARE stock_cursor CURSOR FOR SELECT t.msg_role_id FROM training_course c,t_msg_text t WHERE c.course_id=t.course_id AND c.creater_party_id='';##获取本部所有课件 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = ; OPEN stock_cursor; cursor_loop: LOOP FETCH stock_cursor INTO c_msg_role_id; IF done= THEN
LEAVE cursor_loop;
END IF; DELETE FROM t_msg_mapping WHERE msg_role_id=c_msg_role_id AND user_login_id=v_user_login;##删除消息映射表中prom的角色 END LOOP cursor_loop;
CLOSE stock_cursor;
END$$ DELIMITER ;
mysql存储过程使用游标循环插入数据的更多相关文章
- mysql存储过程批量向表插入数据
业务需要,往某个表中批量插入数据,使用存储过程插入 首先,要建立一张mysql表,表明为phone_number, 三个字段,id 自增,number 就是要插入的表格,is_used 表示十分已经使 ...
- MYSQL中创建存储过程实现向表中循环插入数据
首先在test数据库中先创建一个表test: CREATE TABLE test( ID INT PRIMARY KEY AUTO_INCREMENT ,test_name VARCHAR(20),t ...
- mysql存储过程之游标遍历数据表
原文:mysql存储过程之游标遍历数据表 今天写一个mysql存储过程,根据自己的需求要遍历一个数据表,因为对存储过程用的不多,语法不甚熟悉,加之存储过程没有调试环境,花了不少时间才慢慢弄好,故留个痕 ...
- Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer 关于Newtonsoft.Json,LINQ to JSON的一个小demo mysql循环插入数据、生成随机数及CONCAT函数 .NET记录-获取外网IP以及判断该IP是属于网通还是电信 Guid的生成和数据修整(去除空格和小写字符)
Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer Advanced Installer :Free for 30 da ...
- mysql循环插入数据
实验中经常会遇到需要多条数据的情况就想到了用SQL语句循环生成数据 DROP PROCEDURE if EXISTS test_insert; DELIMITER ;; CREATE PROCEDUR ...
- MariaDB MariaDB、MySQL存储过程、游标基础应用举例说明
MariaDB.MySQL存储过程.游标基础应用举例说明 by:授客 QQ:1033553122 测试环境: MariaDB-10.0.19-centos7-x86_64 实践操作: # 创建测试数据 ...
- MySQL存储过程之游标实战
MySQL存储过程之游标实战 博主日前在解决一个项目需求时,没有什么好的方法,于是就来学习存储过程了,之前也是接触过,奈何年少贪玩,竟是全部又还给了大学老师-苦不堪言呐-. 先说一下业务需求吧 ...
- Linux C 调用MYSQL API 函数mysql_escape_string()转义插入数据
Title:Linux C 调用MYSQL API 函数mysql_escape_string()转义插入数据 --2013-10-11 11:57 #include <stdio.h> ...
- paginate()出来的数据怎样循环插入数据?
paginate()出来的数据怎样循环插入数据? paginate()分页如何转数组操作数据之后再转回对象? thinkphp5 model里面用toarray后怎么分页? 以上类似问题的出现,是因为 ...
随机推荐
- [转][Oracle]常见报错及处理
IIS 在安装 Oracle Client 后,需要命令行执行: iisreset 1.ORA-00257 参考自:https://jingyan.baidu.com/article/f71d6037 ...
- JAVA Map 和 List 排序方法
private Map<String,String> mapDate; //正序 mapDate=new TreeMap<String, String>(new Compara ...
- [UE4]正交
一.如果两条直线是垂直的,那么就可以说这2条直线是正交的.既然有垂直,为什么还要有正交概念呢? 因为正交可以描述两个或者多个变量之间互不影响.互不干涉,而垂直是完全属于几何的术语. 二.具有正交关系的 ...
- centos7 安装pip+python3.6
centos7安装pip 1.执行:yum install python-pip 若没有python-pip包,先执行:yum -y install epel-release,再执行yum insta ...
- Mysql之 配置文件读取顺序
On Unix, Linux and Mac OS X, MySQL programs read startup options from the following files, in the sp ...
- Redis进阶实践之十三 Redis的Redis-trib.rb脚本文件使用详解
转载来源:http://www.cnblogs.com/PatrickLiu/p/8484784.html 一.简介 事先说明一下,本篇文章不涉及对redis-trib.rb源代码的分析,只是从使用的 ...
- Ext.NET Ext.JS 常用代码片段摘录
引言 最近写代码突然有"一把梭"的感觉, 不管三七二十一先弄上再说. 换别人的说法, 这应该是属于"做项目"风格法吧. 至于知识体系, 可以参考官方或者更权威的 ...
- U3D学习11——nav导航和动画
一.nav导航 1.nav mesh agent 2.off mesh link 3.navigation面板-areas标签的应用,导航分层 二.动画 1.avatar可重用. 2.Animator ...
- Junit4简单使用
一.Junit4是JAVA语言的单元测试框架,用于编写和运行可重复的测试,可以大大提高效率 1.使用Junit4必须在项目中导入Junit4.har文件 2.新建Junit Test case 勾选s ...
- unhandledException
处理未捕获的异常是每个应用程序起码有的功能,C#在AppDomain提供了UnhandledException 事件来接收未捕获到的异常的通知.常见的应用如下: static void Main(st ...