CURSOR_STATUS (Transact-SQL)

指定されたパラメータでプロシージャがカーソルと結果セットを返したかどうかを、ストアド プロシージャの呼び出し元が判断するためのスカラ関数です。

トピック リンク アイコン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

以下に結果セットを示します。

宣言後

---------------

-1

オープン後

----------

1

クローズ後

-----------

-1