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后怎么分页? 以上类似问题的出现,是因为 ...
随机推荐
- Hive数据类型及文本文件数据编码
本文参考Apache官网,更多内容请参考:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types 1. 数值型 类型 ...
- [转][Centos]常用命令之:ls和cd
来自:https://www.cnblogs.com/zerotomax/p/7224927.html ls 类似于 dir 在使用centos这个linux系统的时候,我们总是免不了需要查看当前目录 ...
- MATLAB在三维坐标中显示图片 并 使得图片部分透明
要画一个光路图,本来可以用proe,但是鼠标不好用,有些操作也忘了,用MATLAB画了个.下面是用到的图片. 但是三维坐标中显示彩色图片的目标没有搞定,做了个灰度图,然后用仿射程序将彩色图片贴到了二维 ...
- HTML和SEO基础知识:H标签全透视
原文地址:http://www.chinaz.com/web/2010/0921/134391.shtml 什么是H标签? h1,h2,h3,h4,h5,h6,作为标题标签,并且依据重要性递减.我认为 ...
- Scrapy学习篇(八)之settings
Scrapy设定(settings)提供了定制Scrapy组件的方法.你可以控制包括核心(core),插件(extension),pipeline及spider组件.设定为代码提供了提取以key-va ...
- ngIf和ngFor共用
Angular v2不支持同一元素上使用多个结构指令. 一种解决方法,使用<ng-container>,允许为每个结构指令使用单独元素的元素,但不会将其标记为DOM. <ng-con ...
- switch case 变量初始化问题
今天再写alsa的时候遇到一个稀奇古怪的问题,网上看了下资料,摘出来入下 代码: int main() { ; switch(a) { : ; break; : break; default: bre ...
- 阿里云ECS搭建FTP服务器
一.开始前先开通21端口权限; 二.添加IIS角色; 三.添加ftp用户; 四.步骤如下: 五.用添加在用户登录ftp;
- 10进制与16进制之间的转换 delphi
delphi中有直接把10进制转换成16进制的函数: function IntToHex(Value: Integer; Digits: Integer): string; o ...
- Spark2.X分布式弹性数据集
跑一下这个结果 参考代码 package com.spark.test import org.apache.spark.sql.SparkSession import org.apache.spark ...