次の方法で共有


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' }
     )

引数

'local'

カーソル ソースが ローカル カーソルであることを示す定数を指定します。

'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