CREATE DEFINER=`root`@`%` PROCEDURE `split_category_all`()
BEGIN
declare categ varchar(10); ##套餐列
declare str varchar(10);
declare num int;
declare split_key_,id_ bigint;
declare flage int; ##看看是不是纯数字 ,如果是数字为 0;
declare n,n1 int; ##计数器

DECLARE cur_1 CURSOR FOR
select id,split_key,category from `study-projectcenter`.el_pc_course where split_key = 21088161705;
SET n1 = (select count(id) from `study-projectcenter`.el_pc_course where split_key = 21088161705);
SET n=0;
##DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cur_1;

## FETCH cur_1 INTO id_,split_key_,categ; /*获取第一条记录*/

while n< n1 do
FETCH cur_1 INTO id_, split_key_, categ; /*取下一条记录*/
if categ is not null then
set categ=TRIM(categ);
set num = length(categ);

set flage=(SELECT categ REGEXP '[^0-9.]'); ##如果有字符 返回1

if flage =1 then
if str='' then
insert into el_pc_course_temp(split_key,course_id,course_name,category) select split_key,id,course_name, 1
from `study-projectcenter`.el_pc_course where split_key=split_key_ and id=id_;
else ##其他类型都插 0;
insert into el_pc_course_temp(split_key,course_id,course_name,category) select split_key,id,course_name, 0
from `study-projectcenter`.el_pc_course where split_key=split_key_ and id=id_;
end if;

else
if num = 1 then
insert into el_pc_course_temp(split_key,course_id,course_name,category) select split_key,id,course_name, cast(category as SIGNED)
from `study-projectcenter`.el_pc_course where split_key=split_key_ and id=id_;

elseif num = 2 then
insert into el_pc_course_temp(split_key,course_id,course_name,category) select split_key,id,course_name, cast(left(category,1) as SIGNED)
from `study-projectcenter`.el_pc_course where split_key=split_key_ and id=id_;
insert into el_pc_course_temp(split_key,course_id,course_name,category) select split_key,id,course_name, cast(right(category,1) as SIGNED)
from `study-projectcenter`.el_pc_course where split_key=split_key_ and id=id_;

elseif num = 3 then
insert into el_pc_course_temp(split_key,course_id,course_name,category) select split_key,id,course_name, cast(left(category,1) as SIGNED)
from `study-projectcenter`.el_pc_course where split_key=split_key_ and id=id_;
insert into el_pc_course_temp(split_key,course_id,course_name,category) select split_key,id,course_name, cast(substring(category,2,1) as SIGNED)
from `study-projectcenter`.el_pc_course where split_key=split_key_ and id=id_;
insert into el_pc_course_temp(split_key,course_id,course_name,category) select split_key,id,course_name, cast(right(category,1) as SIGNED)
from `study-projectcenter`.el_pc_course where split_key=split_key_ and id=id_;

else
insert into el_pc_course_temp(split_key,course_id,course_name,category) select split_key,id,course_name, 0
from `study-projectcenter`.el_pc_course where split_key=split_key_ and id=id_;

end if;

end if;
else
insert into el_pc_course_temp(split_key,course_id,course_name,category) select split_key,id,course_name, 1
from `study-projectcenter`.el_pc_course where split_key=split_key_ and id=id_;


end if;

set n=n+1;

end while;

close cur_1;

END;

以上是游标在存储过程中的使用。

DECLARE cur_1 CURSOR FOR
select id,split_key,category from `study-projectcenter`.el_pc_course where split_key = 21088161705; ##定义游标 并赋值;
SET n1 = (select count(id) from `study-projectcenter`.el_pc_course where split_key = 21088161705); ##定义while 循环上限;
SET n=0;  ##定义while循环下限;
OPEN cur_1;  ##打开游标
while n< n1 do   ##while 开始
FETCH cur_1 INTO id_, split_key_, categ; /*取一条记录到变量  id_, split_key_, categ 中*/ 注意: 一定要放在while下面,紧贴着

set n=n+1;  ##n 要自增
end while;  ##while循环结束

close cur_1; ##关闭游标

游标的使用——mysql的更多相关文章

  1. 数据库之游标过程-- 基于MySQL

    实例如下: DROP PROCEDURE IF EXISTS pr_change_station_user_acct_his; -- 如果存在存储过程,即删除存储过程 create procedure ...

  2. mysql之游标

    游标 行,也不存在每次一行地处理所有行的简单方法(相对于成批地处理它们).有时,需要在检索出来的行中前进或后退一行或多行.这就是使用游标的原因.游标( cursor)是一个存储在MySQL服务器上的数 ...

  3. MySQL存储过程 游标

    MySQL存储过程  游标 如何在存储过程中使用MySQL游标来遍历SELECT语句返回的结果集 MySQL游标简介 要处理存储过程中的结果集,请使用游标.游标允许您迭代查询返回的一组行,并相应地处理 ...

  4. mysql存储过程中使用游标

    用户变量一般以@开头,作用于全局范围 局部变量需用 declare 定义格式为 declare 变量名 数据类型 [default value]; mysql 数据类型有 int ,float,dat ...

  5. mysql python pymysql模块 增删改查 查询 字典游标显示

    我们看到取得结果是一个元祖,但是不知道是哪个字段的,如果字段多的时候,就比较麻烦 ''' (1, 'mike', '123') (2, 'jack', '456') ''' 用字典显示查询的结果,也可 ...

  6. (2.14)Mysql之SQL基础——游标

    (2.14)Mysql之SQL基础——游标 关键词:Mysql游标 -- (1)定义游标 declare cur_name cursor for select * from table_name wh ...

  7. mysql游标的用法及作用

    1当前有三张表A.B.C其中A和B是一对多关系,B和C是一对多关系,现在需要将B中A表的主键存到C中:常规思路就是将B中查询出来然后通过一个update语句来更新C表就可以了,但是B表中有2000多条 ...

  8. Mysql 游标的定义与使用方式

    创建游标: 首先在MySql中创建一张数据表: CREATE TABLE IF NOT EXISTS `store` (   `id` int(11) NOT NULL AUTO_INCREMENT, ...

  9. Mysql高手系列 - 第19篇:mysql游标详解,此技能可用于救火

    Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能. 这是Mysql系列第19篇. 环境:mysql5.7.25,cmd命令中进行演示. 代码中被[]包含的表示可选,|符 ...

随机推荐

  1. PHP扩展-扩展的生成和编译

    首先说明一下,PHP扩展有两种编译方式:方式一:在编译PHP时直接将扩展编译进去方式二:扩展被编译成.so文件,在php.ini里配置加载路径: 以下开始说明创建PHP扩展并编译的步骤:下载PHP源码 ...

  2. Box Model,边距折叠,内联和块标签,CSSReset

    一.盒子模型(Box Model) 1.1.宽度测试 1.2.溢出测试 1.3.box-sizing属性 1.4.利用CSS画图 二.边距折叠 2.1.概要 2.2.垂直方向外边距合并计算 三.内联与 ...

  3. jQuery 2.0.3 源码分析core - 选择器

         声明:本文为原创文章,如需转载,请注明来源并保留原文链接Aaron,谢谢!      打开jQuery源码,一眼看去到处都充斥着正则表达式,jQuery框架的基础就是查询了,查询文档元素对象 ...

  4. 1、NoSQL概述

    最近抽时间把Redis学了一下,所以就在网上找了一些资料.然后找到尚硅谷-周阳老师的视频教程,觉得里面的讲的挺好.所以就把他视频当中的资料教程整理出来. 单机MySQL的美好时代 在90年代,一个网站 ...

  5. MySQL学习笔记五:数据类型

    MySQL支持多种数据类型,大致可以分为数值,日期/时间和字符类型. 数值类型 MySQL支持所有标准SQL数值数据类型,包括严格数值数据类型(INTEGER.SMALLINT.DECIMAL和NUM ...

  6. linux内核中的每cpu变量

    一.linux中的每cpu变量 看linux内核代码的时候,会发现大量的per_cpu(name, cpu),get_cpu_var(name)等出现cpu字眼的语句.从语句的意思可以看出是要使用与当 ...

  7. new的探究

    new操作符易用,但是往往容易忽略对其的理解. var foo= new Foo(); 这个简单的语句,涉及到了一系列的步骤: 1),给对象开辟内存,即 var foo= {}; 2),修改新对象的隐 ...

  8. Front End Developer Questions 前端开发人员问题(二)

    问题来源:http://markyun.github.io/2015/Front-end-Developer-Questions/ 二.CSS 1.介绍一下标准的CSS的盒子模型?与低版本IE的盒子模 ...

  9. C#设置文件权限

    在开发中,我们经常会使用IO操作,例如创建,删除文件等操作.在项目中这样的需求也较多,我们也会经常对这些操作进行编码,但是对文件的权限进行设置,这样的操作可能会手动操作,现在介绍一种采用代码动态对文件 ...

  10. JS控制的事件

    鼠标点击弹出提示事件: <input type="button" value="鼠标点击弹出提示" onclick="DianJi()" ...