DDR爱好者之家 Design By 杰米

游标

select检索返回的一组行称为结果集,结果集里的行都是根据你输入的sql语句检索出来的,如果不使用游标,你将没有办法得到第一行,前十行或者是下一行

下面是一些常见的游标现象和特性

  • 能够标记游标为只读,是数据能够读取,但不能被更新或者删除
  • 能控制可以执行的定向操作(向前,向后,第一,最后、绝对位置和相对位置等)
  • 能标记某些行为可编辑的,而另一些行为不可编辑的
  • 能规定范围,使游标对创建它的特定请求或者是所有请求可访问
  • Cursor declarations must appear before handler declarations and after
  • variable and condition declarations.
  • 需要注意的是,打开一个游标时,游标并不指向第一条记录,而是指向第一条记录的前边

下面是使用游标的步骤

  • 声明游标 – 在这个过程中你还没有开始检索数据
  • 打开游标以供使用
  • 检索各行
  • 关闭游标,释放游标
DECLARE cs CURSOR 
FOR 
SELECT *
FROM customers
WHERE cust_email IS NULL;

本以为万事大吉,但却给我报错

MySQL中使用游标触发器的方法

从语法上来看没有什么问题

试着在 cs 前面加上@,运行仍然报错

还有人说游标只能在存储过程中使用,是这样吗?

现在我们来试一试在存储过程中使用游标

CREATE PROCEDURE proce1
()
BEGIN
	DECLARE cur1 CURSOR 
	FOR 
	SELECT * 
	FROM customers 
	WHERE cust_id IS NULL tianyoutianyou;
END	

仍然出错

再次更改

delimiter //
CREATE PROCEDURE proce1
()
BEGIN
	DECLARE cur1 CURSOR 
	FOR 
	SELECT * 
	FROM customers 
	WHERE cust_id IS NULL;
END	

这次我们成功地声明游标

是不是因为我们修改了分隔符然我们成功地创建游标了呢?

我们再试试

CREATE PROCEDURE proce1()
DECLARE cur1 CURSOR 
FOR 
SELECT * 
FROM customers 
WHERE cust_id IS NULL;

这样也是错误的,下面再试试不使用存储过程地语句能否成功创建游标

delimiter //
DECLARE cur2 CURSOR
FOR 
SELECT *
FROM orders ;

或者是这样

delimiter //
DECLARE cur2 CURSOR
FOR 
SELECT *
FROM orders //

这两种也8行

试了这么多次,唯一成功的只有下面这种语句

delimiter //
CREATE PROCEDURE proce1()
BEGIN 
	DECLARE cur1 CURSOR 
	FOR 
	SELECT * 
	FROM customers 
	WHERE cust_id IS NULL;
END 

下面我们用游标来检索数据

很遗憾,MySQL中没有像Oracle中 %ROWTYPE 般的数据类型,我们下面试着使用游标来检索customers表中的某一类数据类型

触发器

触发器时特定的存储过程,在数据库发生特定活动时自动进行,一般来说,约束的处理比触发器更快,因此在可能的时候,应该尽可能地使用约束。

DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。