JetSetIndexRange 함수

적용 대상: Windows | Windows Server

JetSetIndexRange 함수

JetSetIndexRange 함수는 커서가 JetMove를 사용하여 걸을 수 있는 인덱스 항목 집합을 현재 인덱스 항목에서 시작하여 해당 커서의 검색 키에 지정된 검색 조건 및 지정된 바인딩된 조건과 일치하는 인덱스 항목에서 끝나는 항목으로 일시적으로 제한합니다. 검색 키는 이전에 JetMakeKey를 사용하여 생성되었어야 합니다.

    JET_ERR JET_API JetSetIndexRange(
      __in          JET_SESID sesid,
    __in          JET_TABLEID tableidSrc,
      __in          JET_GRBIT grbit
    );

매개 변수

sesid

이 호출에 사용할 세션입니다.

tableidSrc

이 호출에 사용할 커서입니다.

grbit

다음 중 0개 이상을 포함하는 이 호출에 사용할 옵션이 포함된 비트 그룹입니다.

의미

JET_bitRangeInclusive

이 옵션의 존재 또는 부재는 인덱스 범위의 경계 조건을 나타냅니다. 이 옵션은 인덱스 범위의 제한이 포함됨을 나타냅니다. 없는 경우 이 옵션은 인덱스 범위의 제한이 배타적임을 나타냅니다. 인덱스 범위의 제한이 포함되면 검색 조건과 정확히 일치하는 인덱스 항목이 범위에 포함됩니다.

JET_bitRangeInstantDuration

이 옵션은 인덱스 범위가 설정된 즉시 제거되도록 요청합니다. 작업의 다른 모든 측면은 변경되지 않은 상태로 유지됩니다. 이는 검색 조건과 일치하는 인덱스 항목이 있는지 테스트하는 데 유용합니다.

JET_bitRangeRemove

이 옵션은 커서의 기존 인덱스 범위를 취소할 것을 요청합니다. 인덱스 범위가 취소되면 JetMove를 사용하여 인덱스 범위의 끝 이상으로 이동할 수 있습니다. 인덱스 범위가 아직 적용되지 않으면 JetSetIndexRange 가 JET_errInvalidOperation 실패합니다.

이 옵션을 지정하면 다른 모든 옵션이 무시됩니다.

JET_bitRangeUpperLimit

이 옵션을 사용하는 경우 커서의 검색 키는 인덱스 범위와 일치하는 인덱스 끝에 가장 가까운 인덱스 항목의 검색 조건을 나타냅니다. 인덱스 범위는 커서의 현재 위치와 이 인덱스 항목 사이에 설정되므로 모든 일치 항목은 JET_MoveNext 또는 양수 오프셋이 있는 JetMove 를 사용하여 인덱스에서 앞으로 걸어서 찾을 수 있습니다.

인덱스의 시작 부분에 가장 가까운 인덱스 항목을 찾기 위한 와일드카드 옵션을 사용하여 JetMakeKey 를 사용하여 생성된 검색 키와 함께 이 옵션을 사용하는 것은 의미가 없습니다.

이 옵션을 생략하면 커서의 검색 키는 인덱스 범위와 일치하는 인덱스 시작 부분에 가장 가까운 인덱스 항목의 검색 조건을 나타냅니다. 인덱스 범위는 커서의 현재 위치와 이 인덱스 항목 사이에 설정되므로 모든 일치 항목은 JET_MovePrevious 또는 음수 오프셋이 있는 JetMove 를 사용하여 인덱스에서 뒤로 걸어서 찾을 수 있습니다.

인덱스 끝에 가장 가까운 인덱스 항목을 찾기 위한 와일드카드 옵션을 사용하여 JetMakeKey 를 사용하여 생성된 검색 키로 이 옵션을 생략하는 것은 의미가 없습니다.

반환 값

이 함수는 다음 반환 코드 중 하나를 사용하여 JET_ERR 데이터 형식을 반환합니다. 가능한 ESE 오류에 대한 자세한 내용은 확장 가능한 스토리지 엔진 오류오류 처리 매개 변수를 참조하세요.

반환 코드

설명

JET_errSuccess

작업이 성공적으로 완료되었습니다.

JetSetIndexRange의 경우 기존 인덱스 범위가 취소되었거나 인덱스 범위 내에 하나 이상의 인덱스 항목이 있음을 의미합니다.

JET_errClientRequestToStopJetService

JetStopService 호출로 인해 세션과 연결된 instance 모든 작업이 중단되었으므로 작업을 완료할 수 없습니다.

JET_errInstanceUnavailable

세션과 연결된 instance 해당 데이터의 무결성을 보호하기 위해 모든 데이터에 대한 액세스를 해지해야 하는 심각한 오류가 발생하여 작업을 완료할 수 없습니다.

이 오류는 Windows XP 이상 릴리스에서만 반환됩니다.

JET_errInvalidOperation

이 오류는 JET_bitRangeRemove 지정되고 인덱스 범위가 적용되지 않은 경우 JetSetIndexRange 에서 반환됩니다.

JET_errKeyNotMade

커서에 대한 현재 검색 키가 없습니다. JetSetIndexRange 를 사용하려면 인덱스 항목을 찾는 데 사용되는 검색 조건에 커서에 유효한 검색 키가 있어야 합니다.

JET_errNoCurrentIndex

커서에 대한 현재 인덱스가 없습니다. 커서가 테이블의 클러스터형 인덱스에 있는 경우 기본 인덱스가 정의되지 않은 경우 JetSetIndexRange 에 대해 발생합니다. 이러한 인덱스에서 인덱스 범위를 설정하는 것은 지원되지 않습니다.

JET_errNoCurrentRecord

이 오류는 인덱스 범위 내에 인덱스 항목이 없음을 나타내기 위해 JetSetIndexRange 에서 반환됩니다.

JET_errNotInitialized

세션과 연결된 instance 아직 초기화되지 않았기 때문에 작업을 완료할 수 없습니다.

JET_errRestoreInProgress

세션과 연결된 instance 복원 작업이 진행 중이므로 작업을 완료할 수 없습니다.

JET_errSessionSharingViolation

두 개 이상의 스레드에 대해 동시에 동일한 세션을 사용할 수 없습니다.

이 오류는 Windows XP 이상 릴리스에서만 반환됩니다.

JET_errTermInProgress

세션과 연결된 instance 종료 중이므로 작업을 완료할 수 없습니다.

성공 시 JET_bitRangeRemove 지정되면 현재 적용 중인 인덱스 범위가 취소됩니다. JET_bitRangeRemove 지정하지 않고 JET_bitRangeInstantDuration 지정한 경우 인덱스 범위가 적용되지 않습니다. JET_bitRangeRemove JET_bitRangeInstantDuration 지정하지 않으면 새 인덱스 범위가 적용됩니다. 이 인덱스 범위는 커서가 JetMove 를 사용하여 걸을 수 있는 인덱스 항목 집합을 현재 인덱스 항목에서 시작하여 검색 조건과 일치하는 인덱스 항목에서 끝나는 항목으로 일시적으로 제한합니다. 커서의 위치는 변경되지 않은 상태로 유지됩니다. 커서에 대한 검색 키가 생성된 경우 해당 검색 키가 삭제됩니다. 데이터베이스 상태는 변경되지 않습니다.

실패 시 JET_errNoCurrentRecord 반환되지 않으면 인덱스 범위가 적용되지 않습니다. JET_errNoCurrentRecord 반환되면 새 인덱스 범위가 적용됩니다. 이 인덱스 범위는 커서가 JetMove 를 사용하여 걸을 수 있는 인덱스 항목 집합을 현재 인덱스 항목에서 시작하여 검색 조건과 일치하는 인덱스 항목에서 끝나는 항목으로 일시적으로 제한합니다. 커서의 위치는 변경되지 않은 상태로 유지됩니다. JET_errNoCurrentRecord 반환되고 커서에 대한 검색 키가 생성된 경우 해당 검색 키가 삭제됩니다. 데이터베이스 상태는 변경되지 않습니다.

설명

인덱스 범위는 휘발성이며 커서에서 JetMove 이외의 탐색이 수행되면 자동으로 취소됩니다.

인덱스 범위는 한 방향으로만 작동합니다. 상한이 설정된 경우 인덱스 범위의 끝에 도달하면 jetMove 를 사용하여 JET_MoveNext 또는 양수 오프셋을 사용하는 전진 동작만 방지됩니다. 이 경우 JET_MovePrevious 또는 음수 오프셋이 있는 JetMove 를 사용하여 인덱스 범위를 그대로 둘 수 있습니다. 하한에 대해 유사한 상황이 발생합니다.

요구 사항

요구 사항

클라이언트

Windows Vista, Windows XP 또는 Windows 2000 Professional이 필요합니다.

서버

Windows Server 2008, Windows Server 2003 또는 Windows 2000 Server가 필요합니다.

머리글

Esent.h에서 선언되었습니다.

라이브러리

ESENT.lib를 사용합니다.

DLL

ESENT.dll 필요합니다.

참고 항목

JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetMakeKey
JetMove
JetSetIndexRange
JetStopService