什么是游标?
是一种处理数据的方法,是一种数据访问机制。在数据库中,游标提供了一种从表中检索出的数据进行操作的灵活手段,能从包含数据记录的结果集总每次提取一条记录的机制。
游标总是与一条SQL选择语句相关联,因为游标是由结果集(可以是0条,1条或相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成的。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。
有数据缓冲的思想:游标的设计是一种数据缓冲区的思想,用来存放SQL语句执行的结果。
游标优缺点:
因为游标是针对行操作的,所以对从数据库中select查询得到的每一行可以进行分开的独立的相同或不同的操作,是一种分离的思想。可以满足对某个结果行进行特殊的操作。 游标与基于游标位置的增删改查能力。,我觉得游标是在关系数据库这种面向集合的系统中抽离出来,单独针对行进行表达(也可以理解成网上资料说的:游标是面向集合与面向行的设计思想之间的一种桥梁)。缺点就是由于是一行行的所以速度比较慢,有时候会造成死锁。
游标操作:五步走
声明---打开--读取--关闭--删除
声明游标:
DECLARE <游标名> CURSOR FOR select语句;
打开游标:
open <游标名>
读取游标:
FETCH
[[NEXT |PRIOR(上一行) |FIRST |LAST |ABSOLUTE(制定结果集的第几行){n|@nvar}|RELATIVE{N |@nvar}]
from]
{{[GLOBAL]cursor_name}| @cursor_variable_name}
[into@variable_name[,…n]]
关闭游标:
CLOSE{{[GLOBAL]curcor_name} |cursor_variable_name}
释放游标:
DEALLOCATE{{[GLOBAL]cursor_name}]| @cursor_variable_name}
判断游标提取状态: