CURSOR_STATUS (Transact-SQL)

适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例

对于给定参数,CURSOR_STATUS 显示游标声明是否已返回游标或结果集。

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 具有指定名称的游标不存在。 具有指定名称的游标变量不存在,或者即使存在这样一个游标变量,则该游标变量未分配到任何游标。

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

示例

此示例使用 CURSOR_STATUS 函数显示游标在声明后、打开后和关闭后的状态。

CREATE TABLE #TMP  
(  
   ii INT  
)  
GO  
  
INSERT INTO #TMP(ii) VALUES(1)  
INSERT INTO #TMP(ii) VALUES(2)  
INSERT INTO #TMP(ii) VALUES(3)  
  
GO  
  
--Create a cursor.  
DECLARE cur CURSOR  
FOR SELECT * FROM #TMP  
  
--Display the status of the cursor before and after opening  
--closing the cursor.  
  
SELECT CURSOR_STATUS('global','cur') AS 'After declare'  
OPEN cur  
SELECT CURSOR_STATUS('global','cur') AS 'After Open'  
CLOSE cur  
SELECT CURSOR_STATUS('global','cur') AS 'After Close'  
  
--Remove the cursor.  
DEALLOCATE cur  
  
--Drop the table.  
DROP TABLE #TMP  
  

结果集如下。

After declare
---------------
-1  
  
After Open
----------
1  
  
After Close
-----------
-1

另请参阅

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