SQLServer数据库实用技术(83)
时间:2007-12-23 来源:不详 作者:迈克DB
OPEN{{[GLOBAL]cursor_name}|cursor_variable_name}
各参数说明如下:
•GLOBAL
定义游标为一全局游标。
•cursor_name
为声明的游标名字。假如一个全局游标和一个局部游标都使用同一个游标名,则假如使用GLOBAL便表明其为全局游标,否则表明其为局部游标。
•cursor_variable_name
为游标变量。当打开一个游标后时,MSSQLSERVER首先检查声明游标的语法是否正确,假如游标声明中有变量,则将变量值带入。
在打开游标时,假如游标声明语句中使用了INSENSITIVE或STATIC保留字,则OPEN产生一个临时表来存放结果集;假如在结果集中任何一行数据的大小超过MSSQLSERVER定义的最大行尺寸时,OPEN命令将失败;假如声明游标时作用了KEYSET选项,则OPEN产生一个临时表来存放键值。所有的临时表都存在tempdb数据库中。
在游标被成功打开之后,@@CURSOR_ROWS全局变量将用来记录游标内数据行数。为了提高性能,MSSQLSERVER答应以异步方式从基础表向KEYSET或静态游标读入数据,即假如MSSQLSERVER的查询优化器估计从基础表中返回给游标的数据行已经超过sp_configurecursorthreshold参数值,则MSSQLSERVER将启动另外一个独立的线程来继续从基础表中读入符合游标定义的数据行,此时可以从游标。中读取数据进行处理而不必等到所有的符合游标定义的数据行都从基础表中读入游标@@CURSOR_ROWS变量存储的正是在调用@@CURSOR_ROWS时,游标已从基础表读入的数据行。@@CURSOR_ROWS的返回值有以下四个,如表13-1所示。
织梦好,好织梦
假如所打开的游标在声明时带有SCROLL或INSENSITIVE保留字,那么@@CURSOR_ROWS的值为正数且为该游标的所有数据行。假如未加上这两个保留字中的一个,则@@CURSOR_ROWS的值为-1,说明该游标内只有一条数据记录。
![](/images/arc_icon.gif)
文章评论
共有位Admini5网友发表了评论 查看完整内容