다음을 통해 공유


JetSetColumn 함수

적용 대상: Windows | Windows Server

JetSetColumn 함수

JetSetColumn 함수는 삽입하거나 현재 레코드를 업데이트하기 위해 수정된 레코드의 단일 열 값을 수정합니다. 기존 값을 덮어쓰거나, 다중값 열의 값 시퀀스에 새 값을 추가하거나, 다중값 열의 값 시퀀스에서 값을 제거하거나, 긴 값의 전체 또는 일부, JET_coltypLongText 또는 JET_coltypLongBinary 형식의 열을 업데이트할 수 있습니다.

    JET_ERR JET_API JetSetColumn(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __in          JET_COLUMNID columnid,
      __in_opt      const void* pvData,
      __in          unsigned long cbData,
      __in          JET_GRBIT grbit,
      __in_opt      JET_SETINFO* psetinfo
    );

매개 변수

sesid

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

tableid

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

columnid

검색할 열의 JET_COLUMNID . 또는 columnid 값 0(0)을 지정할 수 있습니다. columnid 0이 지정되면 태그가 지정된 모든 열, 스파스 및 다중값 열이 단일 열로 처리됩니다. 이렇게 하면 레코드에 있는 모든 스파스 열을 쉽게 검색할 수 있습니다.

pvData

열 값에 사용할 데이터를 포함하는 입력 버퍼입니다.

cbData

입력 버퍼의 크기(바이트)입니다.

grbit

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

의미

JET_bitSetAppendLV

이 옵션은 JET_coltypLongText 또는JET_coltypLongBinary 형식의 열에 데이터를 추가하는 데 사용됩니다. 기존 long 값의 크기를 확인하고 psetinfo에서 ibLongValue를 지정하여 동일한 동작을 수행할 수 있습니다. 그러나 기존 열 값의 크기를 알 필요가 없으므로 이 grbit 를 사용하는 것이 더 간단합니다.

JET_bitSetOverwriteLV

이 옵션은 기존 long 값을 새로 제공된 데이터로 바꾸는 데 사용됩니다. 이 옵션을 사용하면 새 데이터를 설정하기 전에 기존 long 값이 0으로 설정된 것처럼 표시됩니다.

JET_bitSetRevertToDefaultValue

이 옵션은 태그가 지정된, 스파스 또는 다중 값 열에만 적용됩니다. 그러면 열이 후속 열 검색 작업에서 기본 열 값을 반환합니다. 모든 기존 열 값이 제거됩니다.

JET_bitSetSeparateLV

이 옵션은 레코드 데이터의 나머지 부분과 별도로 긴 값, JET_coltypLongText 또는 JET_coltypLongBinary 형식의 열을 강제로 저장하는 데 사용됩니다. 이는 일반적으로 long 값의 크기가 나머지 레코드 데이터와 함께 저장되지 않도록 하는 경우에 발생합니다. 그러나 이 옵션은 long 값을 별도로 저장하도록 강제하는 데 사용할 수 있습니다. 더 작은 크기의 긴 값 4바이트는 강제로 분리할 수 없습니다. 이러한 경우 옵션은 무시됩니다.

JET_bitSetSizeLV

이 옵션은 입력 버퍼를 지정된 columnid 에서 설명하는 long 값의 길이로 설정하고 제공된 경우 psetinfo-itagSequence>의 시퀀스 번호로 설정하는 정수 바이트 수로 해석하는 데 사용됩니다. 지정된 크기가 기존 열 값보다 크면 열이 0으로 확장됩니다. 크기가 기존 열 값보다 작으면 값이 잘립니다.

JET_bitSetUniqueMultiValues

이 옵션은 다중값 열의 모든 값이 고유하도록 적용하는 데 사용됩니다. 이 옵션은 변환 없이 원본 열 데이터를 다른 기존 열 값과 비교하고 중복이 발견되면 오류가 반환됩니다. 이 옵션이 제공되면 JET_bitSetAppendLV, JET_bitSetOverwriteLV 및 JET_bitSetSizeLV 지정할 수도 없습니다.

JET_bitSetUniqueNormalizedMultiValues

이 옵션은 다중값 열의 모든 값이 고유하도록 적용하는 데 사용됩니다. 이 옵션은 열 데이터의 정규화된 주요 변환을 유사하게 변환된 다른 기존 열 값과 비교하고 중복이 발견되면 오류가 반환됩니다. 이 옵션이 제공되면 JET_bitSetAppendLV, JET_bitSetOverwriteLV 및 JET_bitSetSizeLV 지정할 수도 없습니다.

JET_bitSetZeroLength

이 옵션은 값을 0 길이로 설정하는 데 사용됩니다. 일반적으로 열 값은 cbMax를 0으로 전달하여 NULL 로 설정됩니다. 그러나 JET_coltypText 같은 일부 형식의 경우 열 값은 NULL 대신 0 길이일 수 있으며 이 옵션은 NULL 과 0(0) 길이를 구분하는 데 사용됩니다.

참고 일반적으로 열이 고정 길이 열인 경우 이 비트는 무시되고 열은 NULL로 설정됩니다. 그러나 열이 고정 길이 태그가 지정된 열인 경우 열 길이는 0으로 설정됩니다. 고정 길이 태그가 지정된 열이 0 길이로 설정되면 JetRetrieveColumn 또는 JetRetrieveColumns를 사용하여 열을 검색하려고 시도하지만 cbActual 매개 변수에 반환되는 실제 길이는 0입니다.

JET_bitSetIntrinsicLV

이 옵션은 레코드에 전체 long 값을 저장하는 데 사용됩니다.

JET_bitSetCompressed

이 옵션은 데이터를 저장할 때 데이터 압축을 시도하는 데 사용됩니다.

Windows 7: JET_bitSetCompressed Windows 7에 도입되었습니다.

JET_bitSetUncompressed

이 옵션은 데이터를 저장할 때 압축을 시도하지 않는 데 사용됩니다.

Windows 7: JET_bitSetUnCompressed Windows 7에 도입되었습니다.

psetinfo

JET_SETINFO 구조를 사용하여 이 함수에 대해 설정할 수 있는 선택적 입력 매개 변수에 대한 포인터입니다.

psetinfoNULL로 지정된 경우 함수는 itagSequence가 1이고 ibLongValue가 0인 것처럼 동작합니다. 이렇게 하면 열 집합이 다중값 열의 첫 번째 값을 설정하고 오프셋 0부터 긴 데이터를 설정합니다.

이 매개 변수에 대해 다음 옵션을 설정할 수 있습니다.

의미

ibLongValue

집합 데이터를 시작해야 하는 긴 열 값으로의 이진 오프셋입니다.

itagSequence

설정할 다중값 열 값의 시퀀스 번호입니다. itagSequence가 0으로 설정된 경우 제공된 값이 다중값 값 시퀀스의 끝에 추가되어야 합니다. 제공된 시퀀스 번호가 마지막 기존 다중값 값보다 크면 지정된 값이 값 시퀀스의 끝에 다시 추가됩니다. 시퀀스 번호가 기존 값에 해당하는 경우 해당 값은 지정된 값으로 바뀝니다.

반환 값

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

반환 코드

설명

JET_errSuccess

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

JET_errBadColumnId

지정된 열 ID가 열 ID의 법적 한도를 벗어났습니다.

JET_errClientRequestToStopJetService

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

JET_errColumnNotFound

지정된 columnid 에서 설명하는 열이 테이블에 없습니다.

JET_errColumnNotUpdatable

원본 업데이트 삽입 삭제 작업 중에 긴 값을 업데이트하려고 잘못 시도했습니다.

JET_errColumnTooBig

입력 버퍼에 지정된 지정된 열 값 데이터가 고정 길이 열에 대해 자연스럽거나 고정 길이 텍스트 또는 이진 열에 대해 구성된 크기 제한을 초과합니다. 이 오류는 긴 열에 대해 1024바이트 이상의 데이터를 전달하고 JET_bitSetIntrinsicLV 플래그를 설정할 때도 반환됩니다.

JET_errInstanceUnavailable

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

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

JET_errInvalidBufferSize

지정된 열 값 데이터 크기가 고정 길이 데이터 형식에 대한 자연 항목과 일치하지 않습니다.

JET_errInvalidColumnType

삽입 또는 업데이트 작업 중에 자동 증가 열을 업데이트하거나 바꾸기 작업 중에 버전 열을 업데이트하려는 시도가 잘못되었습니다.

JET_errInvalidgrbit

제공된 옵션은 알 수 없거나 알려진 비트 설정의 잘못된 조합입니다.

JET_errInvalidParameter

지정된 psetinfo-cbStruct>는 JET_SETINFO 구조체에 유효한 크기가 아닙니다.

JET_errMultiValuedDuplicate

열 설정 작업에서 중복 값을 만들려고 했고 JET_bitSetUniqueMultiValues 또는 JET_bitSetUniqueNormalizedMultiValues 지정했습니다.

JET_errNotInitialized

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

JET_errNotInTransaction

호출 세션이 트랜잭션에 없을 때 긴 열 값을 업데이트하려고 잘못 시도했습니다.

JET_errNullInvalid

NULL이 아닌 열을 NULL로 설정하려고 잘못 시도했습니다.

JET_errColumnIllegalNull

JET_errNullInvalid 동일합니다.

JET_errRecordTooBig

열 값은 레코드가 페이지 크기 관련 크기 제한을 초과하게 했기 때문에 입력 버퍼의 값으로 설정할 수 없습니다. JET_coltypLongText 또는 JET_coltypLongBinary 형식의 열은 나머지 레코드 데이터와 별도로 저장할 수 있습니다. 그러나 다른 열은 레코드와 함께 저장되어야 하며 레코드 크기 제한을 초과할 수 있습니다. 긴 열에도 링크로 레코드 내의 5바이트 공간이 필요하며 이로 인해 JET_errRecordTooBig 반환될 수 있습니다.

JET_errRestoreInProgress

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

JET_errSessionSharingViolation

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

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

JET_errTermInProgress

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

JET_errUpdateNotPrepared

커서는 현재 새 레코드를 삽입하거나 기존 레코드를 업데이트하는 과정에 있지 않습니다.

JET_errVersionStoreOutOfMemory

이 오류는 버전 저장소의 구성된 크기가 미해결 업데이트를 모두 보유하기에 충분하지 않은 경우에 발생합니다.

JET_wrnColumnMaxTruncated

입력 버퍼의 열 값이 가변 길이 열에 대해 구성된 최대 길이를 초과하여 잘렸습니다.

성공하면 지정된 열 값의 원하는 부분이 입력 버퍼에서 복사된 데이터로 설정됩니다. 데이터 집합이 가변 길이 열에 대해 지정된 최대 길이를 초과하면 잘렸을 수 있습니다.

오류가 발생한 경우 커서 위치는 변경되지 않고 복사 버퍼에서 열 값 데이터가 업데이트되지 않습니다.

설명

긴 값, JET_coltypLongText 또는 JET_coltypLongBinary 형식의 열 JET_coltypLongBinary 값 설정은 호출 세션이 트랜잭션에 있는 경우에만 수행해야 합니다. 호출 세션이 트랜잭션에 없는 경우 업데이트 작업이 나중에 취소된 경우에도 별도로 저장된 long 값에 대한 수정이 완전히 커밋될 수 있습니다. 호출 세션이 트랜잭션에 있는 경우 업데이트를 취소하고 세션 트랜잭션을 롤백하여 업데이트의 효과를 완전히 롤백할 수 있습니다.

인덱스 업데이트는 JetSetColumn 작업의 결과로 수행되지 않습니다. 대신 모든 열 수정이 완료되고 JetUpdate 가 호출된 후에만 인덱스가 업데이트됩니다. 이렇게 하면 인덱스에 둘 이상의 열이 수정될 때 인덱스를 가장 효율적으로 업데이트할 수 있습니다.

레코드는 데이터베이스 페이지 크기에 따라 크기가 제한됩니다. 5바이트보다 큰 레코드의 긴 값은 JetSetColumn 작업의 결과로 레코드의 데이터가 해당 제한을 초과하는 경우 레코드와 별도로 저장됩니다. 모든 분리 가능한 레코드 열 데이터가 레코드와 별도로 저장되고 레코드가 여전히 레코드 크기 제한을 초과한 후에만 오류 JET_errRecordTooBig 반환됩니다.

요구 사항

요구 사항

클라이언트

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

서버

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

머리글

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

라이브러리

ESENT.lib를 사용합니다.

DLL

ESENT.dll 필요합니다.

참고 항목

JET_COLUMNID
JET_ERR
JET_SESID
JET_TABLEID
JET_SETINFO
JetRetrieveColumn
JetSetColumns