• 相关软件
    >sp_cursor_list 创建者:webmaster 更新时间:2006-02-16 15:51

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



    语法


    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_namesysname用来引用游标的名称。如果通过 DECLARE CURSOR 语句中给定的名称引用游标,则引用名称与游标名称相同。如果通过变量引用游标,则引用名称即为游标变量的名称。
    cursor_namesysname来自 DECLARE CURSOR 语句的游标名称。如果游标是通过将游标变量设置为游标而创建的,则游标名称为系统生成的名称。
    cursor_scopesmallint1 = LOCAL

    2 = GLOBAL
    statussmallint与 CURSOR_STATUS 系统函数报告的值相同:

    1 = 游标名称或变量引用的游标打开。如果游标为不感知游标、静态游标或键集游标,则至少包含一行。如果游标是动态游标,则结果集包含零行或更多的行。

    0 = 游标名称或变量引用的游标打开但是没有行。动态游标不会返回此值。

    -1 = 游标名称或变量引用的游标关闭。

    -2 = 只适用于游标变量。没有给变量指派游标。很可能 OUTPUT 参数给变量指派了游标,但存储过程在返回前关闭了此游标。

    -3 = 指定名称的游标或游标变量不存在,或尚未给游标变量分配游标。


    modelsmallint1 = 不感知(或静态)

    2 = 键集

    3 = 动态

    4 = 快进
    concurrencysmallint1 = 只读

    2 = 滚动锁

    3 = 乐观
    scrollablesmallint0 = 只进

    1 = 可滚动
    open_statussmallint0 = 关闭

    1 = 打开
    cursor_rowsint结果集中合格的行数。有关更多信息,请参见 @@CURSOR_ROWS
    fetch_statussmallint此游标上次提取的状态。有关更多信息,请参见 @@FETCH_STATUS

    0 = 提取成功。

    -1 = 提取失败或超过游标的界限。

    -2 = 请求的行丢失。

    -9 = 游标上没有提取。


    column_countsmallint游标结果集中的列数。
    row_countsmallint上次对游标的操作所影响的行数。有关更多信息,请参见 @@ROWCOUNT
    last_operationsmallint上次对游标执行的操作:

    0 = 没有对游标执行操作。

    1 = OPEN

    2 = FETCH

    3 = INSERT

    4 = UPDATE

    5 = DELETE

    6 = CLOSE

    7 = DEALLOCATE


    cursor_handleint在服务器范围内标识游标的唯一值。



    注释


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


    • Transact-SQL 服务器游标。



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



    使用 sp_describe_cursor_columns 描述由游标返回的结果集的特性。使用 sp_describe_cursor_tables 报告游标引用的基表。sp_describe_cursorsp_cursor_list 报告的信息相同,但前者只适用于指定的游标。



    权限


    执行权限默认授予 public 角色。



    示例


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



    USE Northwind
    GO
    -- Declare and open a keyset-driven cursor.
    DECLARE abc CURSOR KEYSET FOR
    SELECT LastName
    FROM Employees
    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
    相关文章
    本页查看次数: