首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我们需要SQL的游标?

问为什么我们需要SQL的游标?
EN

Stack Overflow用户
提问于 2016-10-25 10:50:06
回答 1查看 67关注 0票数 1

Image有两个表:

代码语言:javascript
复制
Table_1:
id | name | phone
---| ---- | ----
1  | aaaa | 1111
2  | bbbb | 2222
3  | cccc | 3333
...| ...  | ...

Table_2 who is empty now:
id | name | phone
---| ---- | ----

如果您想从table_1中选择一些行并将它们插入到table_2中,我们可以这样做(第一种方法):

代码语言:javascript
复制
insert into table_2
  select * from table_1 where name='aaaa';

这很简单!只有一行代码,但对于cursor,我们需要几行代码(第二种方法使用MySQL的语法):

代码语言:javascript
复制
DECLARE done INT DEFAULT 0;  
DECLARE id int(3);  
DECLARE name char(11);  
DECLARE phone char(11);  
DECLARE mycur CURSOR FOR SELECT * FROM Table_1 where name='aaaa';  
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;  

OPEN mycur;  

REPEAT  
FETCH mycur INTO id,name,phone;  
IF NOT done THEN  
  INSERT INTO Table_2 VALUES (id,name,phone);  
END IF;    
UNTIL done END REPEAT;

CLOSE mycur;  

我的意思是,在普通的producer中,我们可以只使用第一种方法来处理没有游标的结果集吗?什么时候我们真的需要一个光标呢?

EN

回答 1

Stack Overflow用户

发布于 2016-10-25 13:46:26

在不能使用SQL语句的地方需要游标,在大多数情况下,游标用于数据操作以外的操作。例如:

  • 查看表的列表并对每个表进行操作,例如收集统计数据/添加/删除分区。
  • 查看客户列表并为每个客户发送邮件/生成发票

附注:

SQL语句和游标不能(有效地)操作数据的情况非常、非常、非常罕见,尤其是当数据库支持分析函数时。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40230595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档