一、表

学生表

CREATE TABLE `t_student` (

   `stuNum` int(11) NOT NULL auto_increment,

   `stuName` varchar(20) default NULL,

   `birthday` date default NULL,

   PRIMARY KEY  (`stuNum`)

 ) ENGINE=InnoDB DEFAULT CHARSET=utf8



学生分数表

CREATE TABLE `t_stu_score` (

   `id` int(11) NOT NULL auto_increment,

   `stuNum` int(11) default NULL,

   `score` decimal(6,2) default NULL,

   PRIMARY KEY  (`id`),

   KEY `FK_t_stu_score` (`stuNum`),

   CONSTRAINT `FK_t_stu_score` FOREIGN KEY (`stuNum`) REFERENCES `t_student` (`stuNum`)

 ) ENGINE=InnoDB DEFAULT CHARSET=utf8



学生具体表

CREATE TABLE `t_stu_detail` (

   `id` int(11) NOT NULL auto_increment,

   `stuName` varchar(20) default NULL,

   `score` decimal(6,2) default NULL,

   PRIMARY KEY  (`id`)

 ) ENGINE=InnoDB DEFAULT CHARSET=utf8



将t_Student和t_stu_score表中满足一定条件的数据插入到t_stu_detail中。





二、过程

DELIMITER &&

 CREATE PROCEDURE proc_AddStuDetail( IN p_score DECIMAL(6,2) )

  BEGIN

DECLARE vstuNum INT;

DECLARE vstuName VARCHAR(20);

DECLARE vbirthday DATE;

DECLARE vscore DECIMAL(6,2);

DECLARE done INT;



-- 定义游标

DECLARE stuCursor CURSOR

FOR

SELECT stuNum,stuName,birthday FROM t_Student;



-- 定义结束标记

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;



-- 打开游标

OPEN stuCursor;



-- 循环

stuLoop:LOOP

-- 取游标中的数据

FETCH stuCursor INTO vstuNum,vstuName,vbirthday;

IF done = 1 THEN

LEAVE stuLoop;

END IF;



IF DATE(vbirthday) >= '1990-03-01' THEN

SELECT score INTO vscore FROM t_stu_score WHERE stuNum = vstuNum;

IF vscore >= p_score THEN

INSERT INTO t_stu_detail VALUES(NULL,vstuNum,vscore);

END IF;


END IF;

END LOOP stuLoop;



-- 关闭游标

CLOSE stuCursor;

  END

&&

DELIMITER ;



三、调用过程

CALL proc_AddStuDetail(86);

Mysql存储过程中使用cursor的更多相关文章

  1. Mysql 存储过程中使用多游标

    Mysql 存储过程中使用多游标 drop procedure IF EXISTS test_proc_1; create procedure test_proc_1() begin ; ) ; ) ...

  2. MYSQL存储过程中常使用的命令记录

    MYSQL存储过程中常使用的命令记录 1.触发器trigger 查看:show triggers; 2.存储过程procedure 查看:show procedure status; 查看详细:sho ...

  3. MYSQL存储过程中的IN、OUT和INOUT

    MYSQL存储过程中的IN.OUT和INOUT,不能简单理解为一个方法的参数和返回值,而是面向整个过程上下文变量的. 一.MySQL 存储过程参数(in) 基本可以理解为传入function的参数,而 ...

  4. MySQL存储过程中使用SELECT …INTO语句为变量赋值

    使用SELECT …INTO语句为变量赋值 在MySQL存储过程中,可以使用SELECT …INTO语句对变量进行赋值,该语句在数据库中进行查询,并将得到的结果赋值给变量.SELECT …INTO语句 ...

  5. 【转】MySQL存储过程中使用动态行转列

    MySQL存储过程中使用动态行转列 最近做项目关于数据报表处理,然而数据库存储格式和报表展现形式不同,需要进行一下行转列的操作,在做上一个项目的时候也看了一下,但是后来换了读取方式,也就没深入研究这个 ...

  6. mysql -- 存储过程中 declare 和 set 定义变量的区别

    mysql存储过程中,定义变量有两种方式:1.使用set或select直接赋值,变量名以 @ 开头.例如:set @var=1;可以在一个会话的任何地方声明,作用域是整个会话,称为会话变量. 2.以 ...

  7. MySQL存储过程中的3种循环,存储过程的基本语法,ORACLE与MYSQL的存储过程/函数的使用区别,退出存储过程方法

    在MySQL存储过程的语句中有三个标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环.还有一种非标准的循环方式:GOTO,不过这种循环方式最好别用,很容易引起程序的混乱,在这里就不错具体 ...

  8. mysql存储过程中 乱码问题解决办法

    中文乱码无论在何时都是一个头疼的问题,mysql的存储过程参数也同样存在这个问题.1.直接使用insert into语句没问题,能够正常插入汉字.2.把insert into语句移到Procedure ...

  9. mysql 存储过程中使用游标中使用临时表可以替代数组效果

    mysql不支持数组.但有时候需要组合几张表的数据,在存储过程中,经过比较复杂的运算获取结果直接输出给调用方,比如符合条件的几张表的某些字段的组合计算,mysql临时表可以解决这个问题.临时表:只有在 ...

随机推荐

  1. 洛谷 P1334 瑞瑞的木板

    P1334 瑞瑞的木板 题目描述 瑞瑞想要亲自修复在他的一个小牧场周围的围栏.他测量栅栏并发现他需要N(1≤N≤20,000)根木板,每根的长度为整数Li(1≤Li≤50,000).于是,他神奇地买了 ...

  2. snmp agent 表格实现(子代理方式实现)

    前奏參见例如以下: http://blog.sina.com.cn/s/blog_8f3de3250100xhao.html http://blog.csdn.net/hepeng597/articl ...

  3. mmx-编译脚本

    脚本目录位置 /home/zhangshuli/git2/vanzo_team/xulei/Mmx.py 在-/bin目录下,链接Mmx.py ln -sf ~/git2/vanzo_team/xul ...

  4. startActivity时报错Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag

    startActivity时报错Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVI ...

  5. 课程与教学管理系统(CMS):Sakai

    课程与教学管理系统(CMS):Sakai 一.总结 java的spring.Hibernate等框架开发的 J2EE的开源cms 二.SAKAI Sakai是一个自由.开源的在线协作和学习环境,由Sa ...

  6. 12.模板别名以及auto定义返回值

    #include <iostream> #include <array> using namespace std; //定义返回值类型 template<class T1 ...

  7. LayUI-Table表格渲染

    记项目中又一表格使用方法,项目首选是使用BootstrapTable的,但是经过多番查证与调试,始终没有把固定列的功能调试成功,找到的成功的例子原样照搬都不行,文件引入也都没有问题,实在搞不懂了,如果 ...

  8. Java web开发了解

    1.什么是Java web项目? F.A.Q: 服务器 服务器,也称伺服器,是提供计算服务的设备.由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力.服务器的构 ...

  9. Qt Creator 源码学习 03:qtcreator.pro

    当我们准备好 Qt Creator 的源代码之后,首先进入到它的目录,来看一下它的源代码目录有什么奥秘. 这里一共有 9 个文件夹和 9 个文件.我们来一一看看它们都是干什么用的. .git: 版本控 ...

  10. 微服务实战(三):深入微服务架构的进程间通信 - DockOne.io

    原文:微服务实战(三):深入微服务架构的进程间通信 - DockOne.io [编者的话]这是采用微服务架构创建自己应用系列第三篇文章.第一篇介绍了微服务架构模式,和单体式模式进行了比较,并且讨论了使 ...