@@FETCH_STATUS (Transact-SQL)

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

この館数は、接続によって現在オープンされているカーソルに対して最後に実行した FETCH ステートメントの状態を返します。

Transact-SQL 構文表記規則

構文

@@FETCH_STATUS  

Note

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

戻り値の型

integer

戻り値

戻り値 説明
 0 FETCH ステートメントは正常に実行されました。
-1 FETCH ステートメントが失敗したか、または行が結果セットに収まりません。
-2 フェッチした行がありません。
-9 カーソルはフェッチ操作を実行しません。

注釈

@@FETCH_STATUS は接続時のすべてのカーソルに対してグローバルであるため、慎重に使用してください。 FETCH ステートメントを実行した後、別のカーソルに対して他の FETCH ステートメントを実行する前に、@@FETCH_STATUS を調べる必要があります。 接続時にフェッチが実行されるまで、@@FETCH_STATUS は未定義です。

たとえば、ユーザーがあるカーソルからの FETCH ステートメントを実行します。次に、別のカーソルからの結果を開いて処理するためのストアド プロシージャを呼び出します。 呼び出したストアド プロシージャから制御が戻された時点で、@@FETCH_STATUS は、ストアド プロシージャを呼び出す前に実行された FETCH ステートメントではなく、ストアド プロシージャ内で最後に実行された FETCH ステートメントを反映します。

特定のカーソルの最後のフェッチの状態を取得するには、動的管理関数 sys.dm_exec_cursorsfetch_status 列のクエリを実行します。

この例では、@@FETCH_STATUS を使用して WHILE ループ内のカーソルの動作を制御します。

DECLARE Employee_Cursor CURSOR FOR  
SELECT BusinessEntityID, JobTitle  
FROM AdventureWorks2022.HumanResources.Employee;  
OPEN Employee_Cursor;  
FETCH NEXT FROM Employee_Cursor;  
WHILE @@FETCH_STATUS = 0  
   BEGIN  
      FETCH NEXT FROM Employee_Cursor;  
   END;  
CLOSE Employee_Cursor;  
DEALLOCATE Employee_Cursor;  
GO  

関連項目

カーソル関数 (Transact-SQL)
FETCH (Transact-SQL)