CURSOR_STATUS (Transact-SQL)

一个标量函数,它允许存储过程的调用方确定该存储过程是否已为给定的参数返回了游标和结果集。

主题链接图标Transact-SQL 语法约定

语法

CURSOR_STATUS 
          ( 
               { 'local' , 'cursor_name' } 
          | { 'global' , 'cursor_name' } 
          | { 'variable' , 'cursor_variable' } 
          ) 

参数

'local'

指定一个常量,该常量指示游标的源是一个本地游标名。

'cursor_name'

游标的名称。游标名必须符合有关标识符的规则。

'global'

指定一个常量,该常量指示游标的源是一个全局游标名。

'variable'

指定一个常量,该常量指示游标的源是一个本地变量。

'cursor_variable'

游标变量的名称。必须使用 cursor 数据类型定义游标变量。

返回类型

smallint

返回值 游标名 游标变量

1

游标的结果集至少有一行。

对于不区分的游标和键集游标,结果集至少有一行。

对于动态游标,结果集可以有零行、一行或多行。

分配给该变量的游标已打开。

对于不区分的游标和键集游标,结果集至少有一行。

对于动态游标,结果集可以有零行、一行或多行。

0

游标的结果集为空。*

分配给该变量的游标已经打开,然而结果集肯定为空。*

-1

游标被关闭。

分配给该变量的游标被关闭。

-2

不适用。

可以是:

先前调用的过程并没有将游标分配给 OUTPUT 变量。

先前调用的过程为 OUTPUT 变量分配了游标,然而在过程结束时,游标处于关闭状态。因此,游标被释放,并且没有返回调用过程。

没有将游标分配给已声明的游标变量。

-3

具有指定名称的游标不存在。

具有指定名称的游标变量并不存在,或者即使存在这样一个游标变量,但并没有给它分配游标。

* 动态游标从不返回此结果。

示例

以下示例创建一个名为 lake_list 的过程,并将执行 lake_list 的输出用作 CURSOR_STATUS 的检验。

ms177609.note(zh-cn,SQL.90).gif注意:
本示例依赖于一个名为 check_authority 的过程,该过程尚未创建。
IF EXISTS (SELECT name FROM sysobjects
      WHERE name = 'lake_list' AND type = 'P')
   DROP PROCEDURE lake_list
GO
CREATE PROCEDURE lake_list
   ( @region varchar(30),
     @size integer,
     @lake_list_cursor CURSOR VARYING OUTPUT )
AS 
BEGIN
   DECLARE @ok SMALLINT
   EXECUTE check_authority @region, username, @ok OUTPUT
   IF @ok = 1
      BEGIN
      SET @lake_list_cursor = CURSOR LOCAL SCROLL FOR
         SELECT name, lat, long, size, boat_launch, cost
         FROM lake_inventory
         WHERE locale = @region AND area >= @size
         ORDER BY name
      OPEN @lake_list_cursor
      END
END
DECLARE @my_lakes_cursor CURSOR
DECLARE @my_region char(30)
SET @my_region = 'Northern Ontario'
EXECUTE lake_list @my_region, 500, @my_lakes_cursor OUTPUT
IF Cursor_Status('variable', '@my_lakes_cursor') <= 0
   BEGIN
   /* Some code to tell the user that there is no list of
   Lakes. */
   END
ELSE
   BEGIN
      FETCH @my_lakes_cursor INTO -- Destination here
      -- Continue with other code here.
END

请参阅

参考

游标函数 (Transact-SQL)
数据类型 (Transact-SQL)

其他资源

使用标识符作为对象名称

帮助和信息

获取 SQL Server 2005 帮助