使用系统存储过程管理游标

在建立一个游标后,便可利用系统存储过程对游标进行管理,管理游标的系统过程主要有以下几个:sp_cursor_list、sp_describe_cursor、sp_describe_cursor_tables、sp_describe_cursor_columns.

1.sp_cursor_list

sp_cursor_list显示在当前作用域内的游标及其属性,其命令格式为:

sp_cursor_list[@cursor_return=]cursor_variable_name OUTPUT,

                      [@cursor_scope=]cursor_scope

其中,cursor_variable_name为游标变量,cursor_scope指出游标的作用域如下表所示。

游标作用域范围值
cursor_scope值描述
1表是返回所有的LOCAL游标
2表是返回所有的GLOBAL游标
3表示LOCAL、GLOBAL游标都返回

举例:声明一个键值驱动游标,并使用sp_cursor_list报告该游标的特性。

DECLARE employee_cur CURSOR KEYSET

FOR 

SELECT employee_name FROM Employee

WHERE employee_name like'肖%'

OPEN employee_cur                                                    /*打开游标employee_cursor*/

/*声明游标变量@report以存储来自sp_cursor_list的游标信息*/

DECLARE @report CURSOR

/*执行sp_cursor_list将信息送游标变量@report*/

EXEC master.dbo.sp_cursor_list @cursor_return=@report OUTPUT

          @cursor_scope=2

FETCH NEXT FROM @report

WHILE(@@fetch_status<>-1)

BEGIN

FETCH NEXT FROM @report

END

CLOSE @report

DEALLOCATE @report

GO

CLOSE employee_cur

DEALLOCATE employee_cur

GO

运行结果如图所示

执行结果
 reference_namecursor_namecursor_scopestatusmodelconcurrencyscroollableopen_statuscursor_rowsfetch_statuscolumn_count
1employee_curemployee_cur212311191

2.sp_describe_cursor

sp_describe_cursor用来显示游标的属性。其语法格式如下:

sp_describe-cursor[@cursor_return=]output_cursor_variable OUTPUT

                             {[,[@cursor_source=]N'local',[@cursor_identity=]N'local_cursor_name']

                              |[,[@cursor_source=]N'global',[@cursor_identity=]N'global_cursor_name']

                              |[,[@cursor_source=]N'variable',[@cursor_identity=]N'input_cursor_variable']

                             }

其中,output_cursor_variable为游标变量,接受游标的输出;@cursor_scource指定进行报告的游标是LOCAL、GLOBAL或游标变量;@cursor_identity指定具有LOCAL类型、GLOBAL类型或关联的游标变量的名称。

举例:定义并打开一个全局游标,使用sp_decribe_cursor报告游标的特性。

DECLARE employee_cur CURSORSTATIC FOR

SELECT employee_name FROM employee

OPEN employee_cur

DECLARE @report CURSOR

EXEC master.dbo.sp_describe_cursor @cursor_return =@Report OUTPUT,

@cursor_source =N'global',@cursor_identity=N'emloyee_cur'

FETCH NEXT from @report

WHILE(@@FETCH_STATUS<>-1)

BEGIN

        FETCH NEXT from @report

END

CLOSE @report

DEALLOCATE @report

GO

CLOSE employee_cur

DEALLOCATE employee_cur

GO

说明:

(1)sp_describe_cursor_tables用来显示游标引用的基本表。

(2)sp_describe_cursor_columns用来显示游标结果集中数据列的属性。






  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值