CURSOR_STATUS (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
与えられたパラメーターに対して、CURSOR_STATUS
はカーソル宣言でカーソルと結果のセットが返されているかどうかを示します。
構文
CURSOR_STATUS
(
{ 'local' , 'cursor_name' }
| { 'global' , 'cursor_name' }
| { 'variable' , 'cursor_variable' }
)
引数
'local'
カーソル ソースがローカル カーソル名であることを示す定数を指定します。
'cursor_name'
カーソルの名前。 カーソル名は、データベース識別子の規則に従っている必要があります。
'global'
カーソル ソースがグローバル カーソル名であることを示す定数を指定します。
'variable'
カーソル ソースがローカル変数であることを示す定数を指定します。
'cursor_variable'
カーソル変数の名前。 使用して、カーソル変数を定義する必要があります、 カーソル データ型。
戻り値の型
smallint
戻り値 | カーソル名 | カーソル変数 |
---|---|---|
1 | カーソルの結果セットは 1 つ以上の行で構成されます。 状態非依存のキーセット カーソルの場合、結果セットは 1 つ以上の行で構成されます。 動的カーソルの場合、結果セットは 0、1、または複数の行で構成されます。 |
この変数に割り当てられているカーソルはオープンしています。 状態非依存のキーセット カーソルの場合、結果セットは 1 つ以上の行で構成されます。 動的カーソルの場合、結果セットは 0、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