图片有两个表:
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
中,我们是否可以使用第一种方式处理结果集WITHOUT游标?
什么时候我们真的需要一个游标??
答案 0 :(得分:2)
在无法使用SQL语句的情况下需要游标,在大多数情况下,除了数据操作之外的操作。例如 -
P.S。
非常非常非常罕见的是,SQL语句无法(有效地)操纵数据,并且需要游标,尤其是当数据库支持分析函数时。