다음을 통해 공유


OPEN(Transact-SQL)

DECLARE CURSOR 또는 SET cursor_variable 문에 지정된 Transact-SQL 문을 실행하여 Transact-SQL 서버 커서를 열고 커서를 채웁니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

OPEN { { [ GLOBAL ] cursor_name } | cursor_variable_name }

인수

GLOBAL

cursor_name이 전역 커서를 나타내도록 지정합니다.

cursor_name

선언된 커서의 이름입니다. 동일한 cursor_name을 가진 전역 커서와 로컬 커서가 모두 존재할 경우 GLOBAL이 지정되어 있으면 cursor_name이 전역 커서를 나타내고 그렇지 않으면 로컬 커서를 나타냅니다.

cursor_variable_name

커서를 나타내는 커서 변수의 이름입니다.

주의

INSENSITIVE 또는 STATIC 옵션을 사용하여 커서를 선언한 경우 OPEN은 임시 테이블을 만들어 결과 집합을 보관합니다. 결과 집합에 SQL Server 테이블의 최대 행 크기를 초과하는 행이 있으면 OPEN이 실패합니다. KEYSET 옵션을 사용하여 커서를 선언하는 경우에는 OPEN이 임시 테이블을 만들어 키 집합을 보관합니다. 임시 테이블은 tempdb에 저장됩니다.

커서가 열린 후 @@CURSOR_ROWS 함수를 사용하여 마지막으로 열린 커서에서 한정하는 행 수를 받습니다.

[!참고] SQL Server 2005에서는 키 집합 또는 정적 Transact-SQL 커서를 비동기적으로 생성할 수 없습니다. OPEN 또는 FETCH와 같은 Transact-SQL 커서 작업은 일괄 처리되므로 Transact-SQL 커서를 비동기적으로 생성하지 않아도 됩니다. SQL Server 2005에서는 각 커서 작업의 클라이언트 왕복 때문에 짧은 대기 시간 OPEN이 문제가 되는 비동기 키 집합 기반 또는 정적 API(응용 프로그래밍 인터페이스) 서버 커서를 계속 지원합니다.

다음 예에서는 커서를 열고 모든 행을 인출합니다.

DECLARE Employee_Cursor CURSOR FOR
SELECT LastName, FirstName
FROM AdventureWorks.HumanResources.vEmployee
WHERE LastName like 'B%';

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;

참고 항목

참조

CLOSE(Transact-SQL)
@@CURSOR_ROWS(Transact-SQL)
DEALLOCATE(Transact-SQL)
DECLARE CURSOR(Transact-SQL)
FETCH(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기