JetIndexRecordCount 함수
적용 대상: Windows | Windows Server
JetIndexRecordCount 함수
JetIndexRecordCount 함수는 현재 위치부터 현재 인덱스의 항목 수를 계산합니다. 현재 위치는 개수에 포함됩니다. 현재 인덱스가 다중값 열을 초과하고 열의 인스턴스에 여러 값이 있는 경우 테이블의 총 레코드 수보다 클 수 있습니다. 테이블이 비어 있으면 개수에 대해 0이 반환됩니다.
JET_ERR JET_API JetIndexRecordCount(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__out unsigned long* pcrec,
__in unsigned long crecMax
);
매개 변수
sesid
이 호출에 사용할 세션입니다.
tableid
이 호출에 사용할 커서입니다.
pcrec
개수를 받을 부호 없는 long 값에 대한 포인터입니다.
crecMax
계산할 최대 레코드 수입니다. crecMax 값이 0이면 개수가 무제한임을 나타냅니다.
반환 값
이 함수는 다음 반환 코드 중 하나를 사용하여 JET_ERR 데이터 형식을 반환합니다. 가능한 ESE 오류에 대한 자세한 내용은 확장 가능한 스토리지 엔진 오류 및 오류 처리 매개 변수를 참조하세요.
반환 코드 |
설명 |
---|---|
JET_errSuccess |
작업이 성공적으로 완료되었습니다. |
JET_errClientRequestToStopJetService |
JetStopService 호출로 인해 세션과 연결된 instance 모든 작업이 중단되었으므로 작업을 완료할 수 없습니다. |
JET_errInstanceUnavailable |
세션과 연결된 instance 해당 데이터의 무결성을 보호하기 위해 모든 데이터에 대한 액세스를 취소해야 하는 심각한 오류가 발생하여 작업을 완료할 수 없습니다. Windows XP: 이 반환 값은 Windows XP에 도입되었습니다. |
JET_errNoCurrentRecord |
커서가 현재 레코드에 없으며 테이블이 비어 있지 않습니다. Windows XP, Windows Server 2003, Windows 2000 Server 및 Windows 2000 Professional: 커서가 빈 인덱스 또는 인덱스 범위에 배치되면 JetIndexRecordCount 가 JET_errNoCurrentRecord 잘못 반환합니다. |
JET_errNotInitialized |
세션과 연결된 instance 아직 초기화되지 않았기 때문에 작업을 완료할 수 없습니다. |
JET_errRestoreInProgress |
세션과 연결된 instance 복원 작업이 진행 중이므로 작업을 완료할 수 없습니다. |
JET_errSessionSharingViolation |
동시에 둘 이상의 스레드에 동일한 세션을 사용할 수 없습니다. Windows XP: 이 반환 값은 Windows XP에 도입되었습니다. |
JET_errTermInProgress |
세션과 연결된 instance 종료 중이므로 작업을 완료할 수 없습니다. |
이 함수가 성공하면 현재 위치와 최대 crecMax (0이 아닌 경우)를 포함한 정확한 인덱스 항목 수가 pcrec에서 가리키는 서명되지 않은 긴 값으로 반환됩니다.
이 함수가 실패하면 precpos에 할당된 메모리가 변경되지 않습니다.
설명
테이블이 비어 있지 않으면 개수를 시작할 레코드에 커서를 배치해야 합니다. 개수에는 이 레코드가 포함되며 crecMax에서 지정된 제한까지 계산됩니다. crecMax가 0이면 인덱스가 끝날 때까지 작업이 계속 계산됩니다.
인덱스 범위를 사용하여 개수에 대한 인위적인 인덱스 끝 제한을 구성할 수 있습니다. 이러한 방식으로 인덱스의 하위 범위를 정확하게 계산할 수 있습니다. 커서는 범위의 첫 번째 행에 배치되어야 합니다. 범위 키의 끝을 만든 다음 JetSetIndexRange 를 사용하여 포함 또는 단독으로 상한 범위를 설정해야 합니다. 마지막으로, 범위를 정확히 계산하려면 JetIndexRecordCount 를 호출해야 합니다.
JetIndexRecordCount 는 트랜잭션 의미 체계를 준수하고 현재 트랜잭션 상태에서 이 특정 세션에 대해 정확한 개수를 반환합니다.
JetIndexRecordCount 는 항목을 정확히 계산하기 위해 인덱스 리프 페이지에 액세스합니다. 따라서 많은 I/O를 수행할 수 있으며 속도가 느릴 수 있습니다. crecMax 제한은 과도한 부하를 방지하는 데 사용해야 합니다. 범위가 크면 JetGetRecordPosition을 사용하여 대략적인 방식으로 범위를 계산할 수 있습니다.
Windows XP, Windows Server 2003, Windows 2000 Server 및 Windows 2000 Professional: 커서가 빈 인덱스 또는 인덱스 범위에 배치되면 JetIndexRecordCount 는 레코드 수를 0으로 반환하지 않고 JET_errNoCurrentRecord 잘못 반환합니다. 이 경우 애플리케이션이 검사 인덱스 또는 인덱스 범위가 비어 있는지 확인해야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
클라이언트 |
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_SESID
JET_TABLEID
JetGetRecordPosition
JetSetIndexRange
JetStopService