《mysql必知必会》读书笔记--游标的使用
游标的使用
MySQL中游标只能用于存储过程
创建游标
CREATE PROCEDURE processorders()
BEGIN
DECLARE ordernumbers CURSOR
FOR
SELECT order_num FROM orders;
END;
打开关闭游标
CREATE PROCEDURE processorders()
BEGIN
DECLARE ordernumbers CURSOR
FOR
SELECT order_num FROM orders; --打开游标
OPEN ordernumbers;
--关闭游标
CLOSE ordernumbers;
END;
使用游标数据
CREATE PROCEDURE processorders()
BEGIN
--定义一个逻辑控制临时变量
DECLARE done BOOLEAN DEFAULT 0; DECLARE o INT;
--创建游标
DECLARE ordernumbers CURSOR
FOR
SELECT order_num FROM orders;
--条件出现时执行的代码:
--当SQLSTATE '02000'出现时,SET done=1
--SQLSTATE '02000'是一个未找到条件,当REPEAT由于没有更多行供循环而不能继续循环时,出现这个条件
DECLARE CONTINUE HANDLER FOR SQLSTATE '' SET done=1;
--打开游标
OPEN ordernumbers;
--循环遍历所有行
REPEAT
--得到数据
FETCH ordernumbers INTO o;
--结束循环
UNTIL done END REPEAT;
--关闭游标
CLOSE ordernumbers;
END
注意:DECLARE语句的次序,DECLARE语句有特定的次序,用DECLARE定义局部变量必须在定义任意游标或者句柄之前,而句柄又必须在游标之后定义。
REPEAT语句的语法更适合对游标进行循环
综合应用
-- 创建存储过程
CREATE PROCEDURE processorders()
BEGIN
-- 定义临时变量用于逻辑控制
DECLARE done BOOLEAN DEFAULT 0;
-- 临时变量
DECLARE o INT;
DECLARE t DECIMAL(8,2)
-- 创建游标
DECLARE ordernumbers CURSOR
FOR
SELECT order_num FROM orders;
-- 句柄
DECLARE CONTINUE HANDLER FOR SQLSTATE '' SET done=1;
-- 创建表ordertotals
CREATE TABLE IF NOT EXISTS ordertotals(
order_num INT,
total DECIMAL(8,2)
);
-- 打开存储过程
OPEN ordernumbers;
-- 游标循环所有行
REPEAT
-- 获取数据
FETCH ordernumbers INTO o;
-- 将得到的参数o传入之前定义的存储过程ordertotal
CALL ordertotal(o,1,t);
-- 将得到的值存入表 ordertotals
INSERT INTO ordertotals(order_num,total)VALUSE(o,t);
-- 结束游标循环
UNTIL done END REPEAT;
-- 关闭游标
CLOSE ordernumbers;
END;
《mysql必知必会》读书笔记--游标的使用的更多相关文章
- 《mysql必知必会》读书笔记--存储过程的使用
以前对mysql的认识与应用只是停留在增删改查的阶段,最近正好在学习mysql相关内容,看了一本书叫做<MySQL必知必会>,看了之后对MySQL的高级用法有了一定的了解.以下内容只当读书 ...
- MySQL必知必会1-20章读书笔记
MySQL备忘 目录 目录 使用MySQL 检索数据 排序检索数据 过滤数据 数据过滤 用通配符进行过滤 用正则表达式进行搜索 创建计算字段 使用数据处理函数 数值处理函数 汇总数据 分组数据 使用子 ...
- MySQL使用和操作总结(《MySQL必知必会》读书笔记)
简介 MySQL是一种DBMS,即它是一种数据库软件.DBMS可分为两类:一类是基于共享文件系统的DBMS,另一类是基于客户机——服务器的DBMS.前者用于桌面用途,通常不用于高端或更关键应用. My ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- MySQL必知必会(第4版)整理笔记
参考书籍: BookName:<SQL必知必会(第4版)> BookName:<Mysql必知必会(第4版)> Author: Ben Forta 说明:本书学习笔记 1.了解 ...
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
- 《MySQL 必知必会》读书总结
这是 <MySQL 必知必会> 的读书总结.也是自己整理的常用操作的参考手册. 使用 MySQL 连接到 MySQL shell>mysql -u root -p Enter pas ...
- 读《MySql必知必会》笔记
MySql必知必会 2017-12-21 意义:记录个人不注意的,或不明确的,或不知道的细节方法技巧,此书250页 登陆: mysql -u root-p -h myserver -P 9999 SH ...
- 《MySQL必知必会》学习笔记——前言
前言 MySQL已经成为世界上最受欢迎的数据库管理系统之一.无论是用在小型开发项目上,还是用来构建那些声名显赫的网站,MySQL都证明了自己是个稳定.可靠.快速.可信的系统,足以胜任任何数据存储业务的 ...
- 《MySQL必知必会》学习笔记整理
简介 此笔记只包含<MySQL必知必会>中部分章节的整理笔记.这部分章节主要是一些在<SQL必知必会>中并未讲解的独属于 MySQL 数据库的一些特性,如正则表达式.全文本搜索 ...
随机推荐
- zoj 1081:Points Within(计算几何,判断点是否在多边形内,经典题)
Points Within Time Limit: 2 Seconds Memory Limit: 65536 KB Statement of the Problem Several dra ...
- VS编译错误:fatal error C1859:unexpected precompiled header error, simply rerunning the compiler might fix this problem
fatal error C1859:unexpected precompiled header error, simply rerunning the compiler might fix this ...
- SQL的学习
1. 判断表达式的值是否为空在表达式后面接 IS NULL 或 IS NOT NULL 可以判断表达式是否为空或不为空 2. 把数据库中的数据导出成可执行的SQL语句对数据库点击右键一次选择 任务-- ...
- 使用 composer 下载更新卸载类库
前言:要下载什么包,可以去 https://packagist.org/ 找一下包名及其版本信息 1)配置composer.json文件,并使用composer install 命令下载类包,下面以下 ...
- springboot整合mybatis之用外置服务器启动项目(二)
在上一篇中我们是用的springboot自带的tomcat服务器,接下来想试一下 将springboot当做一个web项目 放在eclipse中用tomcat来启动. 首先在pom.xml中加上,移除 ...
- JZOJ.5305【NOIP2017模拟8.18】C
Description
- PHP HTTP协议:防盗链
test.html:主界面 <html> <head> <meta http-equiv="content-type" content="t ...
- R语言中的一些函数
1.控制输出数字的精度 format(123.123,digits=4) 输出4位数字123.1,如果整数超过4位,小数部分就全被略去. options(digits=4) 功能同上,不过在Rsess ...
- Spring boot:logback文件配置
resources文件夹下:新建logback-spring.xml文件. 文件内容like: <?xml version="1.0" encoding="UTF- ...
- Django--20170905--笔记
一.django的安装 1.先安装python 2.再安装django:pip install django 3.使用虚拟环境:pip install virtualenv 二.项目的创建 1.可以先 ...