《数据库系统实训》实验报告——游标
游标
第一部分:样例库的应用
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)创建游标 语句: CREATE PROCEDURE processorders() BEGIN DECLARE ordernumbers CURSOR FOR SELECT ...
- 计算机实训实验报告,计算机实训实验报告.doc
计算机实训实验报告.doc HEFEI UNIVERSITY 计算机实训综合报告 系 别 电子信息与电气工程系 专 业 07电气类 班 级 07级电气类(4)班 姓 名 指导老师 完成时间 2007年 ...
- 有滞后单容对象MATLAB仿真,自动化生产线实训实验报告
<自动化生产线实训实验报告>由会员分享,可在线阅读,更多相关<自动化生产线实训实验报告(47页珍藏版)>请在人人文库网上搜索. 1.北京科技大学自动化生产线实训实验报告班 级: ...
- python爬虫实训实验报告_用Pycharm进行scrapy爬虫的实验报告
1. 实验内容 使用Pycharm写代码,采用scrapy爬取红袖小说网前十页的作品信息. 2. 试验环境 操作系统:window10 家庭版64位操作系统 Python版本:python 3.7.3 ...
- 数据库系统实训——实验十——事务
第一部分:样例库的应用 事件处理: 1)关闭自动提交功能 语句: update vendors set vend_name='New' where vend_id=1001; select * fro ...
- 数据库系统实训——实验九——函数
第一部分:样例库的应用 1)字符串类(文本处理函数) 语句: select cust_name,cust_contact from customers where SOUNDEX(cust_conta ...
- 数据库系统实训——实验八——数据库维护
第一部分:样例库的应用 1) 使用MYSQLDUMP命令备份数据库 mysqldump -u root -p shujukuziyuan >D:/mysql/shujukuzioyuan.sql ...
- 数据库系统实训——实验七——触发器
第一部分:样例库的应用 1) INSERT 触发器 语句: CREATE TABLE orders_log ( change_id int NOT NULL AUTO_INCREMENT, chang ...
- 数据库系统实训——实验五——存储过程
第一部分:样例库的应用 1)Creating Stored Procedures(创建) CREATE PROCEDURE productpricing( ) BEGINSELECT Avg(prod ...
- 数据库系统实训——实验四——视图
第一部分:样例库的应用 1) 利用视图简化复杂的查询(联结) CREATE VIEW productcustomers AS SELECT cust_name, cust_contact,prod_i ...
最新文章
- 题目1095:2的幂次方
- 物料变式的订货型生产(3.0C:可库存的类型)(26)
- 2-RabbitMQ核心概念及AMQP协议
- 新唐M031学习笔记(一)定时器基础计数应用
- HDU 1048 [The Hardest Problem Ever] 字符串处理
- Javascript中的一些小知识收集
- [转]你可能不知道的五个强大HTML5 API
- 宝塔Linux 8888 进不去
- 如何优雅的在手机上进行Python编程
- vs中生成xml注释
- 对抗神经网络(Adversarial Nets)的介绍[1]
- Ubuntu切换桌面显示管理器
- 约束布局ConstraintLayout ,报错:This view is not constrained vertically
- hook:实现简单的键盘记录器
- 利用Matlab考察数据的边缘正态性 作Q_Q图
- 苹果遭遇史上最严厉的泄密:自家的iOS源代码居然泄漏了
- 学校计算机桌子尺寸,家用电脑桌设计尺寸一般是多大
- 【转】STL之父访谈录
- New的返回值和New的(3种)用法详解
- 全网最详细,手把手教你如何参与Harmony(ONE)Staking质押,以BitMax节点为例
热门文章
- 贡献一个连jquery都觉的大的时候可以用的 js库
- [转]gtest使用
- 工业机器人电路图讲解话术_6张经典电路图分析助你进阶高级电工,你都会了吗?...
- mysql5.5的方言_mysql方言问题
- marbin mysql_跨浏览器图像灰度(grayscale)解决方案
- python获取当前网页元素_Python+Selenium练习(三十)- 获取页面元素的href属性
- php txt删除重复行,php – 删除文本文件中的重复行
- 五十二、Python北京美团汉堡外卖数据分析实战
- 二十四、创建Node项目,深入Nodejs
- 基于聚类的“图像分割”