句法
SQL
复制
CURSOR_STATUS
(
{ 'local' , 'cursor_name' }
| { 'global' , 'cursor_name' }
| { 'variable' , 'cursor_variable' }
)
参数
'local'
指定一个常量,指示游标源是本地游标名称。
' cursor_name '
游标的名称。游标名称必须符合数据库标识符规则。
'global'
指定一个常量,指示光标的来源是全局光标名称。
'variable'
指定一个常量,指示光标的来源是局部变量。
' cursor_variable '
游标变量的名称。游标变量必须使用游标数据类型定义。
返回类型
SMALLINT
返回值 | 游标名称 | 游标变量 |
---|---|---|
1 | 游标结果集至少有一行。 对于不敏感和键集游标,结果集至少有一行。 对于动态游标,结果集可以有零个,一个或多个行。 | 分配给这个变量的游标是打开的。 对于不敏感和键集游标,结果集至少有一行。 对于动态游标,结果集可以有零个,一个或多个行。 |
0 | 游标结果集为空。* | 分配给此变量的游标已打开,但结果集肯定是空的。* |
-1 | 光标关闭。 | 分配给此变量的游标已关闭。 |
-2 | 不适用。 | 具有以下其中一种可能性: 之前调用的过程未将游标分配给此OUTPUT变量。 先前分配的过程将光标分配给此OUTPUT变量,但过程完成时光标处于关闭状态。因此,游标被释放,并且不返回到调用过程。 没有游标被分配给声明的游标变量。 |
-3 | 具有指定名称的游标不存在。 | 具有指定名称的游标变量不存在,或者如果存在,则游标尚未分配给它。 |
*动态游标永远不会返回此结果。
例子
这个例子使用该CURSOR_STATUS
函数来显示游标的状态,声明之后,打开之后以及关闭之后。
SQL
复制
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