@@FETCH_STATUS (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
この館数は、接続によって現在オープンされているカーソルに対して最後に実行した FETCH ステートメントの状態を返します。
構文
@@FETCH_STATUS
返り値の種類
integer
戻り値
戻り値 | 説明 |
---|---|
0 | FETCH ステートメントは正常に実行されました。 |
-1 | FETCH ステートメントが失敗したか、または行が結果セットに収まりません。 |
-2 | フェッチした行がありません。 |
-9 | カーソルはフェッチ操作を実行しません。 |
注釈
@@FETCH_STATUS
は接続時のすべてのカーソルに対してグローバルであるため、慎重に使用してください。 FETCH ステートメントを実行した後、別のカーソルに対して他の FETCH ステートメントを実行する前に、@@FETCH_STATUS
を調べる必要があります。 接続時にフェッチが実行されるまで、@@FETCH_STATUS
は未定義です。
たとえば、ユーザーがあるカーソルからの FETCH ステートメントを実行します。次に、別のカーソルからの結果を開いて処理するためのストアド プロシージャを呼び出します。 呼び出したストアド プロシージャから制御が戻された時点で、@@FETCH_STATUS
は、ストアド プロシージャを呼び出す前に実行された FETCH ステートメントではなく、ストアド プロシージャ内で最後に実行された FETCH ステートメントを反映します。
特定のカーソルの最後のフェッチの状態を取得するには、動的管理関数 sys.dm_exec_cursors の fetch_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