@@FETCH_STATUS(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

이 함수는 현재 연결에서 연 모든 커서에 실행된 마지막 커서 FETCH 문의 상태를 반환합니다.

Transact-SQL 구문 표기 규칙

Syntax

@@FETCH_STATUS  

참고 항목

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_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  

관련 항목

커서 함수(Transact-SQL)
FETCH(Transact-SQL)