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

    报告服务器游标结果集中的列特性。



    语法


    sp_describe_cursor_columns

        
    [ @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_columns 时,不能与任何游标相关联。返回的游标是可滚动的动态只读游标。



    [@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_columns 将其报表封装成 Transact-SQL cursor 输出参数。这样,Transact-SQL 批处理、存储过程和触发器就得以按一次一行的方式处理输出。它还意味着无法直接从数据库 API 函数直接调用该过程。cursor 输出参数必须绑定到程序变量,但是数据库 API 不支持绑定 cursor 参数或变量。



    下面是 sp_describe_cursor_columns 返回的游标格式。






























































































    列名数据类型描述
    column_namesysname

    nullable


    给结果集列指派的名称。如果指定列时不带 AS 子句,则该列为 NULL。
    ordinal_positionint从结果集最左边一列算起的相对位置。首列的位置为 1。任何隐藏列的值为 0。
    column_characteristics_flagsint位掩码表示存储在 OLE DB 的 DBCOLUMNFLAGS 中的信息。可以是下列选项之一:

    1 = 书签

    2 = 固定长度

    4 = 可为空

    8 = 行版本控制

    16 = 可更新的列(对没有 FOR UPDATE 子句的游标的计划列所做的设置,如果有这样的列,则每个游标只能有一列)。


    column_sizeint此列中的值最大的可能大小。
    data_type_sqlsmallint表示列的 SQL Server 数据类型的数字。
    column_precisiontinyint列最大精度,为 OLE DB 中的 bPrecision 值。
    column_scaletinyintnumericdecimal 数据类型小数点右边的位数,为 OLE DB 中的 bScale 值。
    order_positionint如果此列参与结果集排序,则指它在排序键中相对于最左边的列的位置。
    order_directionvarchar(1), nullableA = 该列包含在排序键中,按升序排列。

    D = 该列包含在排序键中,按降序排列。

    NULL = 该列没有参与排序。
    hidden_columnsmallint如果值为 0,则此列出现在选择列表中。值为 1 则保留以备将来使用。
    columnidint基列的列 ID。如果结果集列由表达式生成,则 columnid 为 –1。
    objectidint提供列的基表的对象 ID。如果结果集列由表达式生成,则 objectid 为 –1。
    dbidint包含提供列的基表的数据库 ID。如果结果集列由表达式生成,则 dbid 为 –1。
    dbnamesysname

    nullable


    包含提供列的基表的数据库名称。如果结果集列由表达式生成,则 dbname 为 NULL。



    注释


    sp_describe_cursor_columns 描述服务器游标结果集中的列特性,例如每个游标的名称和数据类型。使用 sp_describe_cursor 描述服务器游标的全局特性。使用 sp_describe_cursor_tables 报告游标所引用的基表。使用 sp_cursor_list 可获得连接时可视的 Transact-SQL 服务器游标的报告。



    权限


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



    示例


    下面的示例打开一个全局游标,并使用 sp_describe_cursor_columns 报告游标所使用的列。



    USE Northwind
    GO
    -- Declare and open a global cursor.
    DECLARE abc CURSOR KEYSET FOR
    SELECT LastName
    FROM Employees
    GO
    OPEN abc

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

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

    -- Fetch all the rows from the sp_describe_cursor_columns 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_columns.
    CLOSE @Report
    DEALLOCATE @Report
    GO
    -- Close and deallocate the original cursor.
    CLOSE abc
    DEALLOCATE abc
    GO
    相关文章
    本页查看次数: