sp_cursor_list (Transact-SQL)

适用范围:SQL Server

报告当前为连接打开的服务器游标的属性。

Transact-SQL 语法约定

语法

sp_cursor_list
    [ @cursor_return = ] cursor_return OUTPUT
    , [ @cursor_scope = ] cursor_scope
[ ; ]

参数

[ @cursor_return = ] cursor_return OUTPUT

声明的游标变量的名称。 @cursor_return是 int 类型的 OUTPUT 参数。游标是可滚动的动态只读游标。

[ @cursor_scope = ] cursor_scope

指定要报告的游标级别。 @cursor_scopeint,无默认值,可以是这些值之一。

说明
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 的名称。 在 SQL Server 中,如果游标是通过将游标变量设置为游标创建的, cursor_name 则返回游标变量的名称。 在早期版本中,此输出列将返回系统生成的名称。
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 在服务器作用域内标识游标的唯一值。

注解

sp_cursor_list 生成连接打开的当前服务器游标列表,并描述每个游标的全局属性,例如游标的可滚动性和可更新性。 列出的 sp_cursor_list 游标包括:

  • Transact-SQL Server 游标。

  • ODBC 应用程序打开的 API 服务器游标,然后调用 SQLSetCursorName 它来命名游标。

用于 sp_describe_cursor_columns 说明游标返回的结果集的属性。 用于 sp_describe_cursor_tables 游标引用的基表的报表。 sp_describe_cursor 报告与指定游标相同的信息 sp_cursor_list,但只报告指定游标的信息。

权限

执行权限默认为 公共 角色。

示例

下面的示例将打开一个全局游标,并使用 sp_cursor_list 报告该游标的属性。

USE AdventureWorks2022;
GO

-- Declare and open a keyset-driven cursor.
DECLARE abc CURSOR KEYSET
FOR
SELECT LastName
FROM Person.Person
WHERE LastName LIKE 'S%';

OPEN abc;

-- Declare a cursor variable to hold the cursor output variable
-- from sp_cursor_list.
DECLARE @Report CURSOR;

-- Execute sp_cursor_list into the cursor variable.
EXEC master.dbo.sp_cursor_list
    @cursor_return = @Report OUTPUT,
    @cursor_scope = 2;

-- Fetch all the rows from the sp_cursor_list output cursor.
FETCH NEXT from @Report;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
    FETCH NEXT from @Report;
END

-- Close and deallocate the cursor from sp_cursor_list.
CLOSE @Report;
DEALLOCATE @Report;
GO

-- Close and deallocate the original cursor.
CLOSE abc;
DEALLOCATE abc;
GO