& #x 40; & #x 40 です。FETCH_STATUS (TRANSACT-SQL)@@FETCH_STATUS (Transact-SQL)

適用対象:○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

構文Syntax


@@FETCH_STATUS  

戻り値の型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.

解説Remarks

@@FETCH_STATUS接続に、すべてのカーソルに対してグローバルなを使用して@FETCH_STATUS慎重にします。</span><span class="sxs-lookup">Because @@FETCH_STATUS is global to all cursors on a connection, use @@FETCH_STATUS carefully. FETCH ステートメントが実行された後に @ テスト@FETCH_STATUS他の FETCH ステートメントが別のカーソルに対して実行される前に行う必要があります。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フェッチが接続で実行する前に、定義されていません。</span><span class="sxs-lookup">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 ステートメントではない、ストアド プロシージャで最後にフェッチが反映されます。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.

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

使用例Examples

次の例では、@@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;  
WHILE @@FETCH_STATUS = 0  
   BEGIN  
      FETCH NEXT FROM Employee_Cursor;  
   END;  
CLOSE Employee_Cursor;  
DEALLOCATE Employee_Cursor;  
GO  

参照See Also

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