JetGetCurrentIndex 함수
적용 대상: Windows | Windows Server
JetGetCurrentIndex 함수
JetGetCurrentIndex 함수는 지정된 커서의 현재 인덱스 이름을 결정합니다. 이 이름은 나중에 JetSetCurrentIndex를 사용하여 해당 인덱스를 현재 인덱스로 다시 선택하는 데도 사용됩니다. JetGetTableIndexInfo를 사용하여 해당 인덱스의 속성을 검색하는 데 사용할 수도 있습니다.
JET_ERR JET_API JetGetCurrentIndex(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__out JET_PSTR szIndexName,
__in unsigned long cchIndexName
);
매개 변수
sesid
이 호출에 사용할 세션입니다.
tableid
이 호출에 사용할 커서입니다.
szIndexName
커서의 현재 인덱스 이름을 받는 출력 버퍼입니다.
cchIndexName
출력 버퍼의 최대 문자 크기입니다.
반환 값
이 함수는 다음 반환 코드 중 하나를 사용하여 JET_ERR 데이터 형식을 반환합니다. 가능한 ESE 오류에 대한 자세한 내용은 확장 가능한 스토리지 엔진 오류 및 오류 처리 매개 변수를 참조하세요.
반환 코드 |
설명 |
---|---|
JET_errSuccess |
작업이 성공적으로 완료되었습니다. |
JET_errClientRequestToStopJetService |
JetStopService 호출로 인해 세션과 연결된 instance 모든 작업이 중단되었으므로 작업을 완료할 수 없습니다. |
JET_errInstanceUnavailable |
세션과 연결된 instance 해당 데이터의 무결성을 보호하기 위해 모든 데이터에 대한 액세스를 해지해야 하는 심각한 오류가 발생하여 작업을 완료할 수 없습니다. 이 오류는 Windows XP 이상 릴리스에서만 반환됩니다. |
JET_errNotInitialized |
세션과 연결된 instance 아직 초기화되지 않았기 때문에 작업을 완료할 수 없습니다. |
JET_errRestoreInProgress |
세션과 연결된 instance 복원 작업이 진행 중이므로 작업을 완료할 수 없습니다. |
JET_errSessionSharingViolation |
동시에 둘 이상의 스레드에 동일한 세션을 사용할 수 없습니다. 이 오류는 Windows XP 이상 릴리스에서만 반환됩니다. |
JET_errTermInProgress |
세션과 연결된 instance 종료 중이므로 작업을 완료할 수 없습니다. |
JET_wrnBufferTruncated |
작업이 성공적으로 완료되었지만 출력 버퍼가 너무 작아서 전체 인덱스 이름을 받을 수 없습니다. 출력 버퍼가 인덱스 이름만큼 채워졌습니다. 출력 버퍼의 길이가 하나 이상인 경우 해당 출력 버퍼의 문자열은 null로 종료됩니다. 참고 cchIndexName이 0이면 이 오류가 반환되지 않습니다. 자세한 내용은 설명 섹션을 참조하세요. |
성공하면 지정된 커서의 현재 인덱스 이름이 출력 버퍼에 반환됩니다. JET_wrnBufferTruncated 반환되면 출력 버퍼에는 제공된 공간에 맞는 만큼의 인덱스 이름이 포함됩니다. 출력 버퍼의 길이가 하나 이상인 경우 해당 버퍼에 반환된 문자열은 null로 종료됩니다. 데이터베이스 상태는 변경되지 않습니다.
실패 시 출력 버퍼의 상태가 정의되지 않습니다. 데이터베이스 상태는 변경되지 않습니다.
설명
커서에 대한 현재 인덱스가 없으면 빈 문자열이 반환됩니다. 이 문제는 커서가 테이블의 클러스터형 인덱스에 있고 기본 인덱스가 정의되지 않은 경우에 발생할 수 있습니다. 이 인덱스는 테이블의 순차 인덱스라고 하며 정의가 없습니다. 어쨌든 JetSetCurrentIndex 를 사용하여 현재 인덱스를 빈 문자열로 설정하면 기본 인덱스 정의의 존재 여부에 관계없이 클러스터형 인덱스가 선택됩니다.
이 함수에는 모든 릴리스에 있는 중요한 버그가 있습니다. 출력 버퍼가 너무 작아서 전체 인덱스 이름을 받을 수 없으며 출력 버퍼의 길이가 하나 이상인 경우 JET_wrnBufferTruncated 반환되지 않습니다. 대신 JET_errSuccess 반환됩니다. 이 문제를 방지하려면 출력 버퍼의 길이가 항상 JET_cbNameMost + 1(65) 이상이어야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
클라이언트 |
Windows Vista, Windows XP 또는 Windows 2000 Professional이 필요합니다. |
서버 |
Windows Server 2008, Windows Server 2003 또는 Windows 2000 Server가 필요합니다. |
머리글 |
Esent.h에 선언되었습니다. |
라이브러리 |
ESENT.lib를 사용합니다. |
DLL |
ESENT.dll 필요합니다. |
유니코드 |
JetGetCurrentIndexW(유니코드) 및 JetGetCurrentIndexA(ANSI)로 구현됩니다. |
참고 항목
JET_ERR
JET_SESID
JET_TABLEID
JetGetTableIndexInfo
JetSetCurrentIndex