游标的作用
游标可以对数据进行逐条的控制
平常写SELECT语句的时候得到的是一个统一的结果集,无法对结果进行逐条的控制,游标便可以实现逐条的控制。
游标通过操作结果集中的数据,逐行进行处理来达某种目的。
游标的使用方法
比如需要对BOOKS表的每条记录进行逐条处理,首先在内存中申请空间,例如需要处理的select语句是Select * form books;,则:
Declare
CURSOR mycur is
Select * form books;
需要对此结果进行逐行的处理,则将游标对应的数据取出放在一个变量里,事先需要准备好一个变量,由于是表的所有字段,则这么写:
Myrecord books%ROWTYPE;
接着就是将结果集打开
Begin
Open mycur;
打开之后则把数据放到事先声明的变量里面
FETCH mycur INTO Myrecord;
之后循环判断取数据
WHILE mycur%FOUND
表示当游标中有数据可取 %FOUND为游标的四个属性的一个 返回布尔值
之后循环取值将数据显示:
WHILE mycur%FOUND LOOP
Dbms_Output.put_line(Myrecord.id || Myrecord.name);
FETCH mycur INTO Myrecord;
END LOOP;
Close mycur;
End;
/
其中id就是BOOKS表中的字段id name同样
当数据量很大,不建议使用游标,比较消耗资源。