关于SQL游标中的@@CURSOR_ROWS变量

        今天在写一个存储过程的时候,需要得到 游标读取出的行数,在看了相关资料后决定用@@CURSOR_ROWS来读取,没想到测方式该变量的输出结果使终是-1,让我很是郁闷,于是又重新去查找资料,终于得到了满意的答案,贴出来与大家分享。

       在 游标被成功打开之后,@@CURSOR_ROWS 全局变量将用来记录 游标内数据行数。为了提高性能,MS SQL SERVER 允许以异步方式从基础表向KEYSET 或静态 游标读入数据,即如果MS SQL SERVER 的查询优化器估计从基础表中返回给 游标的数据行已经超过sp_configure cursor threshold 参数值,则MS SQL SERVER 将启动另外一个独立的线程来继续从基础表中读入符合 游标定义的数据行,此时可以从 游标。中读取数据进行处理而不必等到所有的符合 游标定义的数据行都从基础 表中读入 游标 @@CURSOR_ROWS 变量存储的正是在调用@@CURSOR_ROWS 时, 游标已从基础表读入的数据行。@@CURSOR_ROWS 的返回值有以下四个,如表13-1 所示。

        如果所打开的 游标在声明时带有SCROLL 或INSENSITIVE 保留字,那么@@CURSOR_ROWS 的值为正数且为该 游标的所有数据行。如果未加上这两个保留字中的一个,则@@CURSOR_ROWS 的值为-1, 说明该 游标内只有一条数据记录。

你可能感兴趣的:(sql,sql,优化,server,存储,scroll)