Image有两个表:
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中,我们可以这样做(第一种方法):
insert into table_2
select * from table_1 where name='aaaa';这很简单!只有一行代码,但对于cursor,我们需要几行代码(第二种方法使用MySQL的语法):
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中,我们可以只使用第一种方法来处理没有游标的结果集吗?什么时候我们真的需要一个光标呢?
发布于 2016-10-25 13:46:26
在不能使用SQL语句的地方需要游标,在大多数情况下,游标用于数据操作以外的操作。例如:
附注:
SQL语句和游标不能(有效地)操作数据的情况非常、非常、非常罕见,尤其是当数据库支持分析函数时。
https://stackoverflow.com/questions/40230595
复制相似问题