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 |
カーソルの結果セットは 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