CURSOR_STATUS (Transact-SQL)
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例
对于给定参数,CURSOR_STATUS
显示游标声明是否已返回游标或结果集。
语法
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