適用対象:○SQL Server (2008 以降)○Azure SQL Database×Azure SQL Data Warehouse ×Parallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

接続によって現在オープンされているカーソルに対して最後に実行した FETCH ステートメントの状態を返します。Returns the status of the last cursor FETCH statement issued against any cursor currently opened by the connection.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions



戻り値の型Return Type

整数 (integer)integer

戻り値Return Value

戻り値Return value DescriptionDescription
00 FETCH ステートメントは正常に実行されました。The FETCH statement was successful.
-1-1 FETCH ステートメントが失敗したか、または行が結果セットに収まりません。The FETCH statement failed or the row was beyond the result set.
-2-2 取り出した行がありません。The row fetched is missing.
-9-9 カーソルはフェッチ操作を実行しません。The cursor is not performing a fetch operation.


@@FETCH_STATUS は、接続時のすべてのカーソルに対してグローバルであるため、@@FETCH_STATUS は慎重に使用してください。Because @@FETCH_STATUS is global to all cursors on a connection, use @@FETCH_STATUS carefully. FETCH ステートメントを実行した後、別のカーソルに対して他の FETCH ステートメントを実行する前に、@@FETCH_STATUS の値を調べる必要があります。After a FETCH statement is executed, the test for @@FETCH_STATUS must occur before any other FETCH statement is executed against another cursor. 接続時にフェッチが実行されるまで、@@FETCH_STATUS の値は未定義です。The value of @@FETCH_STATUS is undefined before any fetches have occurred on the connection.

たとえば、ユーザーがあるカーソルからの FETCH ステートメントを実行します。次に、別のカーソルからの結果を開いて処理するためのストアド プロシージャを呼び出します。For example, a user executes a FETCH statement from one cursor, and then calls a stored procedure that opens and processes the results from another cursor. 呼び出したストアド プロシージャから制御が戻された時点で、@@FETCH_STATUS は、ストアド プロシージャを呼び出す前に実行した FETCH ステートメントではなく、ストアド プロシージャで最後に実行した FETCH ステートメントを反映します。When control is returned from the called stored procedure, @@FETCH_STATUS reflects the last FETCH executed in the stored procedure, not the FETCH statement executed before the stored procedure is called.

特定のカーソルの最後のフェッチの状態を取得するには、動的管理関数 sys.dm_exec_cursorsfetch_status 列のクエリを実行します。To retrieve the last fetch status of a specific cursor, query the fetch_status column of the sys.dm_exec_cursors dynamic management function.


次の例では、@@FETCH_STATUS を使用して WHILE ループ内のカーソルの動作を制御します。The following example uses @@FETCH_STATUS to control cursor activities in a WHILE loop.

DECLARE Employee_Cursor CURSOR FOR  
SELECT BusinessEntityID, JobTitle  
FROM AdventureWorks2012.HumanResources.Employee;  
OPEN Employee_Cursor;  
FETCH NEXT FROM Employee_Cursor;  
      FETCH NEXT FROM Employee_Cursor;  
CLOSE Employee_Cursor;  
DEALLOCATE Employee_Cursor;  

参照See Also

カーソル関数 (Transact-SQL) Cursor Functions (Transact-SQL)
フェッチ (&) #40 です。TRANSACT-SQL と #41 です。FETCH (Transact-SQL)