`

mysql 简单存储游标应用

 
阅读更多

DELIMITER $$

 

USE `sigao_dftx`$$

 

DROP PROCEDURE IF EXISTS `pass_result`$$

 

CREATE DEFINER=`root`@`localhost` PROCEDURE `pass_result`(

titleName VARCHAR(5000)

)

BEGIN

DECLARE result_value VARCHAR(5000);  

DECLARE user_id VARCHAR(50); 

DECLARE question_id BIGINT(20);

DECLARE targetuser VARCHAR(80); 

DECLARE done INT DEFAULT FALSE;

DECLARE uqCursor CURSOR FOR SELECT o.result,o.userid,o.questionid,o.targetuser FROM userquestion o,sendemailaftercompleted sm,title t WHERE o.targetuser =sm.email AND sm.titleid = t.id AND t.`name`=titleName LIMIT 300;  

## 将结束标志绑定到游标

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

TRUNCATE  user_topic_score;

##打开游标

OPEN uqCursor;

##开始循环

read_loop: LOOP

    ##提取游标里的数据

    FETCH uqCursor INTO result_value,user_id,question_id,targetuser;

    ## 声明结束的时候

    IF done THEN

      LEAVE read_loop;

    END IF;

     ## 提取用户题目和答案

     CALL proc_split(result_value,';',user_id,question_id,targetuser);

     END LOOP;

  ## 关闭游标

  CLOSE uqCursor;

END$$

 

DELIMITER ;

 

 

DELIMITER $$

 

USE `sigao_dftx`$$

 

DROP PROCEDURE IF EXISTS `proc_split`$$

 

CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_split`(

    inputstring VARCHAR(5000),

    delim VARCHAR(20),

    user_id VARCHAR(50),

    question_id BIGINT(20),

    targetuser VARCHAR(80)

)

BEGIN

    DECLARE strlen INT;

    DECLARE last_index INT;

    DECLARE topicId VARCHAR(50);

    DECLARE resultId VARCHAR(50);

    DECLARE cur_index INT;

    DECLARE cur_char VARCHAR(200);

    DECLARE len INT;

    DECLARE T_R VARCHAR(50);

    SET cur_index=1;

    SET last_index=0;

    SET strlen=LENGTH(inputstring);  

    

    WHILE(cur_index<=strlen) DO    

    BEGIN

        IF SUBSTRING(inputstring FROM cur_index FOR 1)=delim OR cur_index=strlen THEN

            SET len=cur_index-last_index-1;

            IF cur_index=strlen THEN

               SET len=len+1;

            END IF;

            SET  T_R=SUBSTRING(inputstring FROM (last_index+1) FOR len);

   SET  T_R= REPLACE(T_R,'TopicId:','');

   SET  T_R=REPLACE(T_R,'Result:','');

   SET  T_R=REPLACE(T_R,';','');

   SET  topicId=SUBSTRING(T_R FROM 1  FOR LOCATE('$', T_R)-1);

   SET  resultId=SUBSTRING(T_R FROM (LOCATE('$', T_R)+1));

   ##select topic_Id,result_id;

   ##SET  T_R=replace(replace(REPLACE(T_R,';',''),'TopicId:','')),'Result:','');

            ##INSERT INTO user_topic_score(topic_result,user_id,question_id) VALUES(SUBSTRING(inputstring FROM (last_index+1) FOR len),user_id,question_id);

            INSERT INTO user_topic_score(user_id,question_id,topic_id,result_id,targetuser) VALUES(user_id,question_id,topicId,resultId,targetuser);

            SET last_index=cur_index;

        END IF;

        SET cur_index=cur_index+1;

    END;

    END WHILE;

END$$

 

DELIMITER ;

分享到:
评论

相关推荐

    MySQL实验报告5(存储过程与函数)(1)(1).pdf

    MySQL实验报告5(存储过程与函数)(1)(1).pdf

    sql总结.doc

    由于存储过程将应用程序绑定到数据库,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。 (5)存储过程的应用场景 1.通常,复杂的业务逻辑需要多条 SQL 语句。这些语句要分别地从客户机发送到服务器,当客户...

    MYSQL数据库高级应用宝典含实例(索引、视图、触发器、游标和存储过程)

    MYSQL数据库高级应用宝典含实例(索引、视图、触发器、游标和存储过程)

    2021年MySQL高级教程视频.rar

    26.MySQL高级存储过程语法游标基本操作.avi 27.MySQL高级存储过程语法循环获取游标.avi 28.MySQL高级存储过程函数.avi 29.MySQL高级触发器介绍.avi 30.MySQL高级触发器创建及应用.avi └31.MySQL高级触发器查看及...

    mysql 存储过程应用(代码详解)

    详细介绍了mysql使用临时表实现强大的存储过程,怎样获得存储过程的返回值,使用了临时表,游标等方法。

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    │ 7_MySQL存储引擎.mp4 │ 8_MySQL第三范式设计讲解.mp4 │ 9_MySQL数据库设计工具.mp4 │ ├─新版MySQL DBA综合实战班 第06天 │ 1_课堂作业讲解.mp4 │ 2_InnoDB内核之事务和多版本控制.mp4 │ 3_InnoDB底层...

    mysql数据库DB性能与优化笔记

    资源包括:mysql视图应用,mysql存储过程,mysql使用游标,mysql使用触发器,mysql事务管理处理,mysql访问控制,mysql数据优化及备份&索引。

    mysql定时job

    mysql的定时job的一个简单应用,采用mysql存储过程的调用方式执行任务。该任务中涉及到使用游标来完成多个update执行过程。

    高性能MySQL(第3版).part2

    1.5.3MySQL内建的其他存储引擎19 1.5.4第三方存储引擎22 1.5.5选择合适的引擎24 1.5.6转换表的引擎27 1.6MySQL时间线(Timeline)29 1.7MySQL的开发模式32 1.8总结33 第2章MySQL基准测试35 2.1为什么需要...

    mysql第八章.pdf

    MySQL数据应用与开发第八章的内容,包括创建存储过程、利用游标处理结果集、创建事件、管理事件等知识。

    数据库原理及应用-第8章数据库编程.pdf

    数据库原理及应用 Database Principle and Application 第八章 数据库编程 第八章 数据库编程 8.1 嵌入式SQL 8.2 存储过程 8.3 ODBC编程 8.4 小结 8.1 嵌入式SQL 这两种方式细节上有差别,在程序设计的环境下, SQL...

    常见(MySQL)面试题(含答案).docx

    MySQL常见的存储引擎InnoDB、MyISAM的区别?【~】 数据库三范式,根据某个场景设计数据表?优缺点 MySQL 索引使用的注意事项 SQL怎么优化 数据库悲观锁和乐观锁的原理和应用场景? 如何做 MySQL 的性能优化? 索引是...

    MySQL 速成课程,第二版

    MySQL 是最流行的数据库管理系统之一,为从互联网巨头到个人企业数据库到简单的最终用户应用程序以及介于两者之间的一切提供支持。 本书将教您使用最新版本的 MySQL 立即提高工作效率所需了解的所有知识。 通过学习 ...

    mysql第八章.doc

    MySQL数据应用与开发第八章的内容,包括创建存储过程、利用游标处理结果集、创建事件、管理事件等知识。

    MySQL存储过程使用实例详解

    例1、一个简单存储过程游标实例 代码如下: DELIMITER $$ DROP PROCEDURE IF EXISTS getUserInfo $$CREATE PROCEDURE getUserInfo(in date_day datetime)— — 实例— 存储过程名为:getUserInfo— 参数为:date_day...

    PHP和MySQL Web开发第4版pdf以及源码

    13.5.3 游标和控制结构 13.6 进一步学习 13.7 下一章 第三篇 电子商务与安全性 第14章 运营一个电子商务网站 14.1 我们要实现什么目标 14.2 考虑电子商务网站的类型 14.2.1 使用在线说明书公布信息 14.2.2 ...

    PHP和MySQL WEB开发(第4版)

    13.5.3 游标和控制结构 13.6 进一步学习 13.7 下一章 第三篇 电子商务与安全性 第14章 运营一个电子商务网站 14.1 我们要实现什么目标 14.2 考虑电子商务网站的类型 14.2.1 使用在线说明书公布信息 14.2.2 接收产品...

    MySQL存储过程和函数的操作(十二)

    数据库对象表时存储和操作数据的逻辑结构,而数据库对象存储过程和函数,则是用来实现将一组关于表操作的sql语句... 存储过程和函数可以简单理解为一条或多条sql语句的集合。存储过程和函数就是事先经过编译并存储在数

Global site tag (gtag.js) - Google Analytics