侠客们,请帮忙,怎样找到没有释放的游标!!

yown 2003-09-13 05:10:06
侠客们,请帮忙,在Sql server2000中怎样找到没有释放的游标!!
没释放的游标是不是存在某一个出处!!!
...全文
40 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2003-09-13
  • 打赏
  • 举报
回复
sp_cursor_list
报告当前为连接打开的服务器游标的特性。

语法
sp_cursor_list [ @cursor_return = ] cursor_variable_name OUTPUT
, [ @cursor_scope = ] cursor_scope

参数
[@cursor_return =] cursor_variable_name OUTPUT

声明的游标变量的名称。cursor_variable_name 的数据类型为 cursor,没有默认值。游标是可滚动的、动态的只读游标。

[@cursor_scope =] cursor_scope

指定要报告的游标级别。cursor_scope 的数据类型为 int,没有默认值,可以是下列值中的一个。

值 描述
1 报告所有本地游标。
2 报告所有全局游标。
3 报告本地游标和全局游标。


返回代码值


返回的游标
sp_cursor_list 返回的报告是 Transact-SQL 游标输出参数,而不是结果集。这样,Transact-SQL 批处理、存储过程和触发器就得以按一次一行的方式处理输出。这还意味着无法直接从数据库 API 函数调用该过程。游标输出参数必须绑定到程序变量,但是数据库 API 不支持绑定游标参数或变量。

以下是 sp_cursor_list 返回的游标格式。游标格式与 sp_describe_cursor 返回的格式相同。

列名 数据类型 描述
reference_name sysname 用来引用游标的名称。如果通过 DECLARE CURSOR 语句中给定的名称引用游标,则引用名称与游标名称相同。如果通过变量引用游标,则引用名称即为游标变量的名称。
cursor_name sysname 来自 DECLARE CURSOR 语句的游标名称。如果游标是通过将游标变量设置为游标而创建的,则游标名称为系统生成的名称。
cursor_scope smallint 1 = LOCAL
2 = GLOBAL
status smallint 与 CURSOR_STATUS 系统函数报告的值相同:
1 = 游标名称或变量引用的游标打开。如果游标为不感知游标、静态游标或键集游标,则至少包含一行。如果游标是动态游标,则结果集包含零行或更多的行。
0 = 游标名称或变量引用的游标打开但是没有行。动态游标不会返回此值。
-1 = 游标名称或变量引用的游标关闭。
-2 = 只适用于游标变量。没有给变量指派游标。很可能 OUTPUT 参数给变量指派了游标,但存储过程在返回前关闭了此游标。
-3 = 指定名称的游标或游标变量不存在,或尚未给游标变量分配游标。

model smallint 1 = 不感知(或静态)
2 = 键集
3 = 动态
4 = 快进
concurrency smallint 1 = 只读
2 = 滚动锁
3 = 乐观
scrollable smallint 0 = 只进
1 = 可滚动
open_status smallint 0 = 关闭
1 = 打开
cursor_rows int 结果集中合格的行数。有关更多信息,请参见 @@CURSOR_ROWS。
fetch_status smallint 此游标上次提取的状态。有关更多信息,请参见 @@FETCH_STATUS。
0 = 提取成功。
-1 = 提取失败或超过游标的界限。
-2 = 请求的行丢失。
-9 = 游标上没有提取。

column_count smallint 游标结果集中的列数。
row_count smallint 上次对游标的操作所影响的行数。有关更多信息,请参见 @@ROWCOUNT。
last_operation smallint 上次对游标执行的操作:
0 = 没有对游标执行操作。
1 = OPEN
2 = FETCH
3 = INSERT
4 = UPDATE
5 = DELETE
6 = CLOSE
7 = DEALLOCATE

cursor_handle int 在服务器范围内标识游标的唯一值。
zjcxc 2003-09-13
  • 打赏
  • 举报
回复
declare @a cursor
,@cname varchar(8000) ..游标的其他值

exec sp_cursor_list @a output,2
open @a
fetch next from @a into @cname ..游标的其他值
while @@fetch_status=0
begin
print @cname
fetch next from @a into @cname ..游标的其他值

end
deallocate @a
zarge 2003-09-13
  • 打赏
  • 举报
回复
sp_cursor_list

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧