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

    报告服务器游标的特性。



    语法


    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' ]

        }



    参数


    [@cursor_return =] output_cursor_variable OUTPUT



    声明游标变量的名称,该变量接收游标输出。output_cursor_variable 的数据类型为 cursor,没有默认值。调用 sp_describe_cursor 时,不能与任何游标相关联。返回的游标是可滚动的动态只读游标。



    [@cursor_source =] { N'local' | N'global' | N'variable' }



    指定是使用本地游标的名称、全局游标的名称、还是游标变量的名称来指定当前正在对其进行报告的游标。参数是 nvarchar(30)



    [@cursor_identity =] N'local_cursor_name']



    由具有 LOCAL 关键字或默认设置为 LOCAL 的 DECLARE CURSOR 语句创建的游标的名称。local_cursor_name 的数据类型为 nvarchar(128)



    [@cursor_identity =] N'global_cursor_name']



    由具有 GLOBAL 关键字或默认设置为 GLOBAL 的 DECLARE CURSOR 语句创建的游标的名称。也可以是由 ODBC 应用程序打开然后通过调用 SQLSetCursorName 对游标命名的 API 服务器游标的名称。global_cursor_name 的数据类型为 nvarchar(128)



    [@cursor_identity =] N'input_cursor_variable']



    与开放游标相关联的游标变量的名称。input_cursor_variable 的数据类型为 nvarchar(128)



    返回代码值




    返回的游标


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



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






























































































    列名数据类型描述
    reference_namesysname用来引用游标的名称。如果通过 DECLARE CURSOR 语句中给定的名称引用游标,则引用名称与游标名称相同。如果通过变量引用游标,则引用名称即为游标变量的名称。
    cursor_namesysname来自 DECLARE CURSOR 语句的游标名称。如果游标是通过将游标变量设置为游标而创建的,则游标名称为系统生成的名称。
    cursor_scopetinyint1 = LOCAL

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

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

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

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

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

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


    modeltinyint1 = 不感知(或静态)

    2 = 键集

    3 = 动态

    4 = 快进
    concurrencytinyint1 = 只读

    2 = 滚动锁

    3 = 乐观
    scrollabletinyint0 = 只进

    1 = 可滚动
    open_statustinyint0 = 关闭

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

    0 = 提取成功。

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

    -2 = 请求的行丢失。

    -9 = 游标上没有提取。


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

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

    1 = OPEN

    2 = FETCH

    3 = INSERT

    4 = UPDATE

    5 = DELETE

    6 = CLOSE

    7 = DEALLOCATE


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



    注释


    sp_describe_cursor 描述服务器游标的全局特性,比如滚动和更新的能力。使用 sp_describe_cursor_columns 描述由游标返回的结果集的特性。使用 sp_describe_cursor_tables 报告游标所引用的基表。使用 sp_cursor_list 可获得连接时可视的 Transact-SQL 服务器游标的报告。



    DECLARE CURSOR 语句可能会请求一个 Microsoft® SQL Server™ 使用 DECLARE CURSOR 中包含的 SELECT 语句不能支持的游标类型。SQL Server 隐式地将游标转换成支持 SELECT 语句的类型。如果在 DECLARE CURSOR 语句中指定 TYPE_WARNING,SQL Server 向应用程序发送一条转换完毕的消息。然后就可以调用 sp_describe_cursor 确定已实现的游标类型。



    权限


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



    示例


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



    USE Northwind

    GO
    -- Declare and open a global cursor.
    DECLARE abc CURSOR STATIC FOR
    SELECT LastName
    FROM Employees

    OPEN abc

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

    -- Execute sp_describe_cursor into the cursor variable.
    EXEC master.dbo.sp_describe_cursor @cursor_return = @Report OUTPUT,
        @cursor_source = N'global', @cursor_identity = N'abc'

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

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

    -- Close and deallocate the original cursor.
    CLOSE abc
    DEALLOCATE abc
    GO
    相关文章
    本页查看次数: