다음을 통해 공유


인출 및 스크롤

커서에서 행을 검색하는 작업을 인출이라고 합니다. 다음은 사용 가능한 인출 옵션입니다.

  • FETCH FIRST

    커서의 첫 번째 행을 인출합니다.

  • FETCH NEXT

    인출된 마지막 행의 다음 행을 인출합니다.

  • FETCH PRIOR

    인출된 마지막 행의 이전 행을 인출합니다.

  • FETCH LAST

    커서의 마지막 행을 인출합니다.

  • FETCH ABSOLUTE n

    n이 양의 정수인 경우 커서의 첫 번째 행에서 n번째 행을 인출합니다. n이 음의 정수인 경우 커서의 끝 이전의 n번째 행을 인출합니다. n이 0인 경우에는 행이 인출되지 않습니다.

  • FETCH RELATIVE n

    인출된 마지막 행에서 n번째 행을 인출합니다. n이 양수인 경우 인출된 마지막 행 이후의 n번째 행을 인출합니다. n이 음수인 경우 인출된 마지막 행 이전의 n번째 행을 인출합니다. n이 0인 경우에는 동일한 행이 다시 인출됩니다.

커서가 열려 있으면 커서의 현재 행 위치가 논리적으로 첫 번째 행 이전이 됩니다. 커서가 열린 후 첫 번째 수행된 인출일 경우 다른 인출 옵션이 다음과 같은 결과를 초래할 수 있습니다.

  • FETCH FIRST

    커서의 첫 번째 행을 인출합니다.

  • FETCH NEXT

    커서의 첫 번째 행을 인출합니다.

  • FETCH PRIOR

    행을 인출하지 않습니다.

  • FETCH LAST

    커서의 마지막 행을 인출합니다.

  • FETCH ABSOLUTE n

    n이 양의 정수인 경우 커서의 첫 번째 행에서 n번째 행을 인출합니다. n이 음의 정수인 경우 커서의 끝 이전의 n번째 행을 인출합니다. 예를 들어 n = -1이면 커서의 마지막 행이 인출됩니다. n이 0인 경우에는 행이 인출되지 않습니다.

  • FETCH RELATIVE n

    n이 양수인 경우 커서의 n번째 행을 인출합니다. n이 음수 또는 0인 경우에는 행이 인출되지 않습니다.

Transact-SQL 커서는 한 번에 한 행씩만 인출하도록 제한됩니다. API 서버 커서는 각 인출마다 행 블록을 인출할 수 있습니다. 한 번에 여러 행을 인출할 수 있는 커서를 블록 커서라고 합니다.

커서 분류

커서는 지원하는 인출 옵션에 따라 다음과 같이 분류할 수 있습니다.

  • 정방향 전용

    첫 번째 행에서 마지막 행까지 행을 순차적으로 인출해야 합니다. 허용되는 인출 작업은 FETCH NEXT뿐입니다.

  • 스크롤 가능

    커서의 어느 위치에서나 행을 임의로 인출할 수 있습니다. 동적 커서가 절대 인출을 지원하지 않는 경우를 제외하면 모든 인출 작업이 허용됩니다.

스크롤 가능 커서는 특히 온라인 응용 프로그램 지원 시 유용합니다. 커서는 응용 프로그램에서 표 또는 목록 상자에 대응될 수 있습니다. 사용자가 위아래 또는 표 전체로 스크롤하면 응용 프로그램이 스크롤 인출을 사용하여 사용자가 표시할 커서로부터 행을 검색합니다.

행 인출을 위한 API

사용된 실제 문, 함수 또는 메서드의 API는 행을 인출하기 위해 다른 이름을 갖습니다.

  • Transact-SQL 커서는 FETCH FIRST, FETCH LAST, FETCH NEXT, FETCH PRIOR, FETCH ABSOLUTE(n) 및 FETCH RELATIVE(n) 문을 사용합니다.

  • OLE DB는 IRowset::GetNextRows, IRowsetLocate::GetRowsAt, IRowsetLocate::GetRowsAtBookmarkIRowsetScroll::GetRowsAtRatio 등의 메서드를 사용합니다.

  • ODBC는 한 행에 대한 FETCH NEXT와 동일한 SQLFetch 함수를 사용하거나 SQLFetchScroll 함수를 사용합니다. SQLFetchScroll은 블록 커서와 모든 인출 옵션(first, last, next, prior, absolute, relative)을 지원합니다.

  • ADO는 Move, MoveFirst, MoveLast, MoveNextMovePreviousRecordset 메서드를 사용하여 커서에서 위치를 확인합니다. 그런 다음 GetRows 레코드 집합 메서드를 사용하여 해당 위치에서 하나 이상의 행을 검색합니다. GetRows는 인출할 행 수로 설정된 Start 매개 변수로 직접 호출할 수 있습니다.