mssql sqlserver 静态游标 动态游标 keyset驱动游标 相关知识分享


摘要:
下文分别讲述 静态游标 动态游标 keyset驱动游标 的应用场景,如下所示:
实验环境:sql server 2008 R2


当我们创建一个游标,不指定游标属性时,游标默认为一个动态游标。

动态游标:

动态游标通常和滚动游标一起使用,当数据基表中的数据变化后,动态游标可以实时获取基表中的数据变化。

静态游标:

静态游标当我们为游标进行赋值时,游标结果集被放入tempdb数据库中缓存,当基表数据发生变化时,游标中
的结果集,还是赋值游标时的值,静态游标不会反应基表中的数据变化。
由于静态游标的数据是被存储在tempdb中,所以结果集不能超过tempdb的相关限制。

keyset游标:

keyset游标:此游标中的行成员和顺序都是固定的;
keyset游标由一组标识符控制,这组标识符称之为“键集”,当打开游标时键值就被生成在tempdb数据库中

 ---申明三种游标的方法分享
DECLARE    [游标类型] CURSOR [ LOCAL | GLOBAL ] 
     [ FORWARD_ONLY | SCROLL ] 
     [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]   ---指定游标为(静态游标  keyset 动态 只进游标)
     [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ] 
     [ TYPE_WARNING ] 
     FOR   [查询结果集语句]