다음을 통해 공유


커서(데이터베이스 엔진)

관계형 데이터베이스에서의 연산은 전체 행 집합에 적용됩니다. SELECT 문에 의해 반환된 행 집합은 문의 WHERE 절 조건을 만족하는 모든 행으로 구성됩니다. SELECT 문에 의해 반환된 전체 행 집합을 결과 집합이라고 합니다. 응용 프로그램, 특히 대화형 온라인 응용 프로그램에서는 전체 결과 집합을 한 단위로 사용하므로 항상 효과적으로 작업할 수는 없습니다. 이러한 응용 프로그램에는 한 번에 한 행이나 적은 행 블록을 사용하여 작업하는 메커니즘이 필요합니다. 커서는 이러한 메커니즘을 제공하는 결과 집합에 대한 확장입니다.

커서는 다음과 같이 결과 처리를 확장합니다.

  • 결과 집합의 특정 행에 위치를 정할 수 있습니다.

  • 결과 집합의 현재 위치에서 한 행 또는 행 블록을 검색합니다.

  • 결과 집합의 현재 위치에 있는 행 데이터를 수정할 수 있습니다.

  • 결과 집합에 나타난 데이터베이스 데이터에 대해 다른 사용자가 변경한 내용을 여러 가지 수준으로 볼 수 있습니다.

  • 스크립트, 저장 프로시저 및 트리거의 Transact-SQL 문에서 결과 집합의 데이터에 액세스할 수 있도록 합니다.

커서 요청

MicrosoftSQL Server에서는 두 가지 방법으로 커서를 요청할 수 있습니다.

  • Transact-SQL

    Transact-SQL 언어는 ISO 커서 구문을 본뜬 커서 사용 구문을 지원합니다.

  • 데이터베이스 API(응용 프로그래밍 인터페이스) 커서 함수

    SQL Server에서는 다음과 같은 데이터베이스 API의 커서 기능을 지원합니다.

    • ADO(Microsoft ActiveX Data Object)

    • OLE DB

    • ODBC(Open Database Connectivity)

응용 프로그램에서 이러한 두 가지 커서 요청 방법을 혼합하여 사용할 수 없습니다. API를 사용하여 커서 동작을 지정한 응용 프로그램은 또한 Transact-SQL DECLARE CURSOR 문을 실행하여 Transact-SQL 커서를 요청할 수 없습니다. 모든 API 커서 특성을 기본값으로 설정한 경우에만 DECLARE CURSOR를 실행해야 합니다.

Transact-SQL 및 API 커서 모두 요청되지 않은 경우 SQL Server는 기본적으로 기본 결과 집합이라고 하는 전체 결과 집합을 응용 프로그램에 반환합니다.

커서 프로세스

Transact-SQL 커서와 API 커서는 구문이 서로 다르지만 모든 SQL Server 커서에 대해 다음과 같은 일반 프로세스를 사용합니다.

  1. 커서와 Transact-SQL 문의 결과 집합을 연결하고 커서 행의 업데이트 가능 여부 등 커서의 특성을 정의합니다.

  2. Transact-SQL 문을 실행하여 커서를 채웁니다.

  3. 보려는 커서의 행을 검색합니다. 커서에서 한 행이나 한 행 블록을 검색하는 작업을 인출이라고 합니다. 일련의 인출 작업을 수행하여 행을 앞으로 또는 뒤로 검색하는 것을 스크롤이라고 합니다.

  4. 또는 커서의 현재 위치에 있는 행에 대해 수정 작업(업데이트 또는 삭제)을 수행합니다.

  5. 커서를 닫습니다.