一、表

学生表

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 存储过程 out cursor_Mysql存储过程中使用cursor相关推荐

  1. MySQL利用存储过程清除所有表中的所有记录

    MySQL利用存储过程清除所有表中的所有记录 在使用MySQL过程中,难免会出现一些测试数据,然而这些测试数据在真正部署运行的时候,通常要被清楚掉,并且自增长的字段要回复初始值.如何高效快速的实现以上 ...

  2. MySQL数据库在众多表中对表名的查询及预处理存储过程(变量做表名)

    以下的文章主要介绍的是MySQL数据库在众多表中进行表名与字段名的查询的实际操作步骤,以及对实现其查询所要用到的SQL 语句的介绍,还有两个实际解决方案的描述,以下就是文章的主要内容描述. 在MySQ ...

  3. 一 什么是mysql cursor_mysql中的cursor是什么意思?

    text cursor 文本光标 例句 1.Moving the text and cursor vertically or horizontally within the view. 在视图中垂直或 ...

  4. 用于在MYSQL中创建存储过程的关键字是_下面选项中,用于在删除存储过程时,检测存储过程是否存在的关键字是_学小易找答案...

    [判断题]秦陵兵马俑三号坑设计的是 军事指挥部 . [单选题]以下不是超塑性变形特点的是:( ) [判断题]如果从表中的外键引用了主表中的值,则不能删除主表中被引用的数据. [单选题]下面选项中,用于 ...

  5. mysql 函数 局部变量_MySQL 存储过程 存储函数 局部变量 游标 概念示例

    一个存储过程是一个可编程的函数,它可以在MySQL中创建并保存.它是由一些SQL语句和一些特殊的控制结构语句组成. 当希望在不同的应用程序或平台上执行相同的函数,或者封装特定的功能时,存储过程是一个非 ...

  6. 超详细图解!【MySQL进阶篇】存储过程,视图,索引,函数,触发器

    超详细图解![MySQL进阶篇]存储过程,视图,索引,函数,触发器 1.1 下载Linux 安装包 1.2 安装MySQL 1.3 启动 MySQL 服务 1.4 登录MySQL 2\. 索引 2.1 ...

  7. mysql 扩展存储过程_MySQL4:存储过程和函数

    什么是存储过程 简单说,存储过程就是一条或多条SQL语句的集合,可视为批文件,但是起作用不仅限于批处理.本文主要讲解如何创建存储过程和存储函数以及变量的使用,如何调用.查看.修改.删除存储过程和存储函 ...

  8. mysql存储过程实va_MySQL存储过程学习 (1)

    1. 创建实例数据库    create database db5;    use db5; 2.创建一个简单的工作表,并插入数据    create table t(s1 int);    inse ...

  9. mysql存储过程删除_MySQL 存储过程删除大表

    1.权限问题 alter routine 编辑或删除存储过程 create routine 建立存储过程 execute 创建存储过程 2.存储过程相关的一些命令 show procedure sta ...

最新文章

  1. vlookup 2张表 显示na_Vlookup函数的这7个应用技巧都不掌握,那就真的Out了
  2. 计算机系统崩溃重新装机,当计算机系统崩溃时如何用U盘重新安装Win7系统
  3. 视图插入数据_用EXCEL作数据分析--招聘信息
  4. java getpathinfo_request.getServletPath()和request.getPathInfo()用法
  5. Java-判断输入数字的奇偶性
  6. 操作系统--用户级线程和内核级线程
  7. Java同步关键字的C#版本?
  8. C#操作操作类库五(字符串的常用扩展方法)
  9. 移动端的头部标签和meta
  10. Linux下更改目录及其下的子目录和文件的访问权限
  11. 洛谷 P1035 级数求和【二分||枚举】
  12. Linux man中文手册的安装与使用
  13. 多个 EXCEL 文件如何合并成一个文件
  14. 交换机短路_交换机环路发现及处理
  15. Vue+SpringBoot+Mybatis的简单员工管理项目
  16. 刚刚,2022中科院分区表发布(附下载)
  17. 我的Java学习之路(第十六天)----- Java实现杨辉三角
  18. 【GBASE】南大通用GBase 8a MPP Cluster技术特点
  19. 大数据开发:MongoDB系统架构简介
  20. 韦氏进销存软件功能更新20220223

热门文章

  1. 为何要使用大数据可视化平台
  2. 闭包 python_Python闭包思想与用法浅析
  3. 退火模拟算法c语言程序,C语言模拟退火算法(C language simulated annealing algorithm).doc...
  4. oracle退出scott_Oracle_11g中解决被锁定的scott用户的方法(转载)
  5. vc只能调用matlab子函数,Vc++6.0调用matlab的数学库函数
  6. 重磅︱R+NLP:text2vec包——New 文本分析生态系统 No.1(一,简介)
  7. [云计算]交换机二层端口access、trunk、hybird的理解
  8. python 内置变量
  9. 数组、链表实现队列、栈
  10. 单线程实现同时监听多个端口(windows平台c++代码)