適用対象: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 | この変数に割り当てられているカーソルはオープンしていますが、結果セットは完全に空です。* |
-1 |
カーソルはクローズしています。 | この変数に割り当てられているカーソルはクローズしています。 |
-2 |
適用不可。 | 次のいずれかの可能性があります。 以前に呼び出されたプロシージャは、この OUTPUT 変数にカーソルを割り当てませんでした。以前に割り当てられたプロシージャは、この OUTPUT 変数にカーソルを割り当てていましたが、プロシージャが完了したときにカーソルが閉じた状態でした。 このため、カーソルの割り当てが解除され、呼び出し元のプロシージャに返されません。宣言されたカーソル変数にはカーソルが割り当てられていません。 |
-3 |
指定した名前のカーソルが存在しません。 | 指定した名前のカーソル変数が存在しないか、存在する場合は、カーソルがまだ割り当てられません。 |
1 動的カーソルはこの結果を返しません。
例
この例では、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
-- and 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