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存储过程使用游标循环插入数据的更多相关文章

  1. mysql存储过程批量向表插入数据

    业务需要,往某个表中批量插入数据,使用存储过程插入 首先,要建立一张mysql表,表明为phone_number, 三个字段,id 自增,number 就是要插入的表格,is_used 表示十分已经使 ...

  2. MYSQL中创建存储过程实现向表中循环插入数据

    首先在test数据库中先创建一个表test: CREATE TABLE test( ID INT PRIMARY KEY AUTO_INCREMENT ,test_name VARCHAR(20),t ...

  3. mysql存储过程之游标遍历数据表

    原文:mysql存储过程之游标遍历数据表 今天写一个mysql存储过程,根据自己的需求要遍历一个数据表,因为对存储过程用的不多,语法不甚熟悉,加之存储过程没有调试环境,花了不少时间才慢慢弄好,故留个痕 ...

  4. 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 ...

  5. mysql循环插入数据

    实验中经常会遇到需要多条数据的情况就想到了用SQL语句循环生成数据 DROP PROCEDURE if EXISTS test_insert; DELIMITER ;; CREATE PROCEDUR ...

  6. MariaDB MariaDB、MySQL存储过程、游标基础应用举例说明

    MariaDB.MySQL存储过程.游标基础应用举例说明 by:授客 QQ:1033553122 测试环境: MariaDB-10.0.19-centos7-x86_64 实践操作: # 创建测试数据 ...

  7. MySQL存储过程之游标实战

    MySQL存储过程之游标实战 ​ 博主日前在解决一个项目需求时,没有什么好的方法,于是就来学习存储过程了,之前也是接触过,奈何年少贪玩,竟是全部又还给了大学老师-苦不堪言呐-. ​ 先说一下业务需求吧 ...

  8. Linux C 调用MYSQL API 函数mysql_escape_string()转义插入数据

    Title:Linux C 调用MYSQL API 函数mysql_escape_string()转义插入数据 --2013-10-11 11:57 #include <stdio.h> ...

  9. paginate()出来的数据怎样循环插入数据?

    paginate()出来的数据怎样循环插入数据? paginate()分页如何转数组操作数据之后再转回对象? thinkphp5 model里面用toarray后怎么分页? 以上类似问题的出现,是因为 ...

随机推荐

  1. java1.8 新特性(关于 match,find reduce )操作

    match处理Integer集合 package lambda.stream; /** * @author 作者:cb * @version 创建时间:2019年1月4日 下午2:35:05 */ i ...

  2. window.open 子窗口关闭刷新父页面

    function JsMod(htmlurl,tmpWidth,tmpHeight){ htmlurl=getRandomUrl(htmlurl); var winObj = window.open( ...

  3. iproute2 对决 net-tools

    如今很多系统管理员依然通过组合使用诸如ifconfig.route.arp和netstat等命令行工具(统称为net-tools)来配置网络功能,解决网络故障.net-tools起源于BSD的TCP/ ...

  4. 2-java内省机制(Introspector)

    来一个简单的示例吧 package com.my.test; import java.beans.BeanInfo; import java.beans.Introspector; import ja ...

  5. (转)C# WebApi 接口参数不再困惑:传参详解

    原文地址:https://www.cnblogs.com/landeanfen/p/5337072.html 本篇打算通过get.post.put.delete四种请求方式分别谈谈基础类型(包括int ...

  6. windows gitbook pdf

    1.安装 nodejs 下载地址:https://nodejs.org/download/release/v6.9.2/node-v6.9.2-x64.msi 执行安装 配置环境变量:C:\Progr ...

  7. Android---页面跳转

    1.首先在一个布局文件(.XML)中绘画了一个跳转按钮(id为btn1): <Button         android:id="@+id/btn1"         an ...

  8. 如何在ubuntu系统里面用新加装的硬盘对系统进行扩容

    我这里是用256G的固态硬盘安装了系统,想通过扩展1T的机械硬盘存储数据的,现在我们需要的就是把这个1T的硬盘进行扩容进去 使用df -h和sudo fdisk -l命令查看磁盘情况 切换到root用 ...

  9. linux中Centos7搭建lnmp环境

    1.安装yum yum update 2.安装nginx源: yum localinstall http://nginx.org/packages/centos/7/noarch/RPMS/nginx ...

  10. SQL SERVER 数据压缩

    从SQL SERVER 2008开始,SQL SERVER 提供了对数据进行压缩的功能,启用数据压缩无须修改应用程序. 数据压缩可有效减少数据的占用空间,读取和写入相同数据花费的IO也响应减少,从而可 ...