mssql sqlserver 游标的分类


摘要:
下文根据游标结果集的类型对游标进行分类,如下所示:
实验环境:sql server 2008 R2



游标分类:

游标常被分为以下四类:

1.静态游标

静态游标结果集:指游标结果集中的数据,一旦生成就不会发生变化。
例:
生成一个静态游标,并将查询的结果集放入游标中,当我们对原表中的数据进行操作时,静态游标中的数据不会发生变化(除非我们重新生成游标)。

2.动态游标

动态游标相对静态游标而言,当游标结果集中所对应的原始表中的数据发生变化,原始表数据的变化对游标均可见。

3.只进游标

只进游标又称之为前进游标,只支持对游标从头到尾依次读取数据。
游标不可向后滚动。
只进游标不支持滚动,只支持从头到尾顺序提取数据,数据库执行增删改,在提取时是可见的,但由于该游标只能进不能向后滚动,所以在行提取后对行做增删改是不可见的。

4.keyset游标

keyset游标,表中各成员身份和顺序都是固定的。当打开游标时,游标结果集中行数据被唯一标识符标识,被标识的列做删改时,用户滚动游标是可见的,如果没被标识的列增该,则不可见,比如insert一条数据,是不可见的,若可见,须关闭重新打开游标

静态游标在使用时无法检测到表数据变化,占用系统资源较少;
动态游标在使用时可检测到数据变化,占用系统资源较多;
keyset游标则处于他们中间,所以根据需求建立适合自己的游标,避免资源浪费。