CURSOR_STATUS (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

与えられたパラメーターに対して、CURSOR_STATUS はカーソル宣言でカーソルと結果のセットが返されているかどうかを示します。

Transact-SQL 構文表記規則

構文

CURSOR_STATUS   
     (  
          { 'local' , 'cursor_name' }   
          | { 'global' , 'cursor_name' }   
          | { 'variable' , 'cursor_variable' }   
     )  

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

'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

関連項目

カーソル関数 (Transact-SQL)
データ型 (Transact-SQL)