游标

第一部分:样例库的应用

1)创建游标

CREATE PROCEDURE processorders()
BEGINDECLARE ordernumbers CURSORFORSELECT order_num FROM orders;
END

由于没有打开游标,此过程不会把数据检索出来。
2)使用游标数据

CREATE PROCEDURE processorders()
BEGIN    -- Declare local variables    DECLARE o INT;    -- Declare the cursor    DECLARE ordernumbers CURSOR    FOR    SELECT order_num FROM orders;    -- Open the cursor    OPEN ordernumbers;    -- Get order number    FETCH ordernumbers INTO o;    SELECT O;    -- Close the cursor    CLOSE ordernumbers;
END;

查询结果:

3)循环检索数据

CREATE PROCEDURE processorders()
BEGIN   -- Declare local variables    DECLARE done BOOLEAN DEFAULT 0;    DECLARE o INT;    -- Declare the cursor    DECLARE ordernumbers CURSOR    FOR    SELECT order_num FROM orders;    -- Declare continue handler    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;    -- Open the cursor    OPEN ordernumbers;    -- Loop through all rows    REPEAT       -- Get order number       FETCH ordernumbers INTO o;       SELECT o;    -- End of loop    UNTIL done END REPEAT;    -- Close the cursor    CLOSE ordernumbers;
END;
```查询结果:![在这里插入图片描述](https://img-blog.csdnimg.cn/2021042211350375.png)4)循环处理数据 ```sql
CREATE PROCEDURE processorders()
BEGIN    -- Declare local variables    DECLARE done BOOLEAN DEFAULT 0;    DECLARE o INT;    DECLARE t DECIMAL(8,2);    -- Declare the cursor    DECLARE ordernumbers CURSOR    FOR    SELECT order_num FROM orders;    -- Declare continue handler,SQLSTATE '02000' 是一个“未找到”条件    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;    -- Create a table to store the results    CREATE TABLE IF NOT EXISTS ordertotals       (order_num INT, total DECIMAL(8,2));    -- Open the cursor    OPEN ordernumbers;    -- Loop through all rows    REPEAT       -- Get order number       FETCH ordernumbers INTO o;       -- Get the total for this order       CALL ordertotal(o, 1, t);       -- Insert order and total into ordertotals       INSERT INTO ordertotals(order_num, total)       VALUES(o, t);    -- End of loop    UNTIL done END REPEAT;    -- Close the cursor    CLOSE ordernumbers;
END;

处理结果:

第二部分:所选课题数据库的应用

1)查询语句:

CREATE PROCEDURE `calculateprice`()
BEGINDECLARE done BOOLEAN DEFAULT 0;
DECLARE o INT;DECLARE t INT;DECLARE remainss CURSORFORSELECT goods_id FROM order_detail;CREATE TABLE IF NOT EXISTS pricetotals(id INT,total INT);OPEN remainss;REPEATFETCH remainss INTO o;CALL pricetotal(o,t);INSERT INTO pricetotals(id,total)VALUES(o,t);UNTIL done END REPEAT;CLOSE remainss;
END

以下为创建用来计算price*remains的函数:

CREATE PROCEDURE `pricetotal`(IN `inumber` int,OUT `ptotal` decimal)
BEGIN#Routine body goes here...SELECT Sum(total_price)FROM order_detailWHERE goods_id = inumberINTO ptotal;
END

查询结果:

参考文章

《数据库系统实训》实验报告——游标相关推荐

  1. 数据库系统实训——实验六——游标

    第一部分:样例库的应用 1)创建游标 语句: CREATE PROCEDURE processorders() BEGIN DECLARE ordernumbers CURSOR FOR SELECT ...

  2. 计算机实训实验报告,计算机实训实验报告.doc

    计算机实训实验报告.doc HEFEI UNIVERSITY 计算机实训综合报告 系 别 电子信息与电气工程系 专 业 07电气类 班 级 07级电气类(4)班 姓 名 指导老师 完成时间 2007年 ...

  3. 有滞后单容对象MATLAB仿真,自动化生产线实训实验报告

    <自动化生产线实训实验报告>由会员分享,可在线阅读,更多相关<自动化生产线实训实验报告(47页珍藏版)>请在人人文库网上搜索. 1.北京科技大学自动化生产线实训实验报告班 级: ...

  4. python爬虫实训实验报告_用Pycharm进行scrapy爬虫的实验报告

    1. 实验内容 使用Pycharm写代码,采用scrapy爬取红袖小说网前十页的作品信息. 2. 试验环境 操作系统:window10 家庭版64位操作系统 Python版本:python 3.7.3 ...

  5. 数据库系统实训——实验十——事务

    第一部分:样例库的应用 事件处理: 1)关闭自动提交功能 语句: update vendors set vend_name='New' where vend_id=1001; select * fro ...

  6. 数据库系统实训——实验九——函数

    第一部分:样例库的应用 1)字符串类(文本处理函数) 语句: select cust_name,cust_contact from customers where SOUNDEX(cust_conta ...

  7. 数据库系统实训——实验八——数据库维护

    第一部分:样例库的应用 1) 使用MYSQLDUMP命令备份数据库 mysqldump -u root -p shujukuziyuan >D:/mysql/shujukuzioyuan.sql ...

  8. 数据库系统实训——实验七——触发器

    第一部分:样例库的应用 1) INSERT 触发器 语句: CREATE TABLE orders_log ( change_id int NOT NULL AUTO_INCREMENT, chang ...

  9. 数据库系统实训——实验五——存储过程

    第一部分:样例库的应用 1)Creating Stored Procedures(创建) CREATE PROCEDURE productpricing( ) BEGINSELECT Avg(prod ...

  10. 数据库系统实训——实验四——视图

    第一部分:样例库的应用 1) 利用视图简化复杂的查询(联结) CREATE VIEW productcustomers AS SELECT cust_name, cust_contact,prod_i ...

最新文章

  1. 题目1095:2的幂次方
  2. 物料变式的订货型生产(3.0C:可库存的类型)(26)
  3. 2-RabbitMQ核心概念及AMQP协议
  4. 新唐M031学习笔记(一)定时器基础计数应用
  5. HDU 1048 [The Hardest Problem Ever] 字符串处理
  6. Javascript中的一些小知识收集
  7. [转]你可能不知道的五个强大HTML5 API
  8. 宝塔Linux 8888 进不去
  9. 如何优雅的在手机上进行Python编程
  10. vs中生成xml注释
  11. 对抗神经网络(Adversarial Nets)的介绍[1]
  12. Ubuntu切换桌面显示管理器
  13. 约束布局ConstraintLayout ,报错:This view is not constrained vertically
  14. hook:实现简单的键盘记录器
  15. 利用Matlab考察数据的边缘正态性 作Q_Q图
  16. 苹果遭遇史上最严厉的泄密:自家的iOS源代码居然泄漏了
  17. 学校计算机桌子尺寸,家用电脑桌设计尺寸一般是多大
  18. 【转】STL之父访谈录
  19. New的返回值和New的(3种)用法详解
  20. 全网最详细,手把手教你如何参与Harmony(ONE)Staking质押,以BitMax节点为例

热门文章

  1. 贡献一个连jquery都觉的大的时候可以用的 js库
  2. [转]gtest使用
  3. 工业机器人电路图讲解话术_6张经典电路图分析助你进阶高级电工,你都会了吗?...
  4. mysql5.5的方言_mysql方言问题
  5. marbin mysql_跨浏览器图像灰度(grayscale)解决方案
  6. python获取当前网页元素_Python+Selenium练习(三十)- 获取页面元素的href属性
  7. php txt删除重复行,php – 删除文本文件中的重复行
  8. 五十二、Python北京美团汉堡外卖数据分析实战
  9. 二十四、创建Node项目,深入Nodejs
  10. 基于聚类的“图像分割”