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