Important
이 기능은 이후 버전의 Windows에서 제거됩니다. 새 개발 작업에서 이 기능을 사용하지 말고 현재 이 기능을 사용하는 애플리케이션을 수정할 계획입니다. 드라이버의 커서 기능을 사용하는 것이 좋습니다.
위치된 업데이트 및 삭제 문장을 지원하기 위해, 커서 라이브러리는 위치된 문에서 검색된 UPDATE 문 DELETE 장을 생성합니다. 데이터 블록에서 SQLGetData 를 호출하는 것을 지원하기 위해, 커서 라이브러리는 검색 SELECT 문으로 구성하여 현재 데이터 행을 포함하는 결과 집합을 생성합니다. 이 문장들 각각에서 WHERE 절은 SQLColAttribute의 SQL_DESC_SEARCHABLE 필드 식별자에 대해 SQL_PRED_SEARCHABLE 또는 SQL_PRED_BASIC를 반환하는 각 바인드 열에 대해 캐시에 저장된 값을 열거합니다.
Caution
커서 라이브러리가 현재 행을 식별하기 위해 생성하는 WHERE 절은 행을 식별하지 못하거나, 다른 행을 식별하지 못하거나, 여러 행을 식별하지 못할 수 있습니다.
위치된 업데이트 또는 삭제 문이 여러 행에 영향을 미치면, 커서 라이브러리는 커서가 위치한 행에 대해서만 행 상태 배열을 업데이트하고 SQL_SUCCESS_WITH_INFO와 SQLSTATE 01001(커서 연산 충돌)을 반환합니다. 문이 행을 식별하지 못하면 커서 라이브러리는 행 상태 배열을 업데이트하지 않고 SQL_SUCCESS_WITH_INFO와 SQLSTATE 01001(커서 연산 충돌)을 반환합니다. 애플리케이션은 SQLRowCount 를 호출하여 업데이트되거나 삭제된 행 수를 확인할 수 있습니다.
SQLGetData 호출 시 커서를 위치시키는 데 사용되는 SELECT 절이 두 행 이상을 식별할 경우, SQLGetData가 올바른 데이터를 반환한다는 보장은 없습니다. 만약 행을 식별하지 못하면 SQLGetData 는 SQL_NO_DATA를 반환합니다.
애플리케이션이 다음 지침을 준수한다면, 커서 라이브러리가 생성한 WHERE 절은 현재 행을 고유하게 식별해야 하며, 데이터 소스에 중복 행이 포함된 경우를 제외하고는 예외입니다.
행을 고유하게 식별하는 열을 묶으세요. 만약 바운드 열이 해당 행을 고유하게 식별하지 못할 경우, 커서 라이브러리가 만든 WHERE 절이 두 개 이상의 행을 식별할 수 있습니다. 위치된 업데이트 또는 삭제 문에서는 이러한 절이 여러 행을 업데이트하거나 삭제할 수 있습니다. SQLGetData를 호출할 때, 이러한 절이 드라이버가 잘못된 행에 대해 데이터를 반환하게 만들 수 있습니다. 모든 열을 고유 키로 바인딩하면 각 행이 고유하게 식별됩니다.
데이터 버퍼를 할당하여 절단이 발생하지 않도록 합니다. 커서 라이브러리의 캐시는 SQLBindCol로 결과 집합에 바인딩된 행셋 버퍼의 값들을 복사한 것입니다. 데이터가 버퍼에 배치될 때 잘라지면, 캐시에서도 잘립니다. 잘린 값으로 구성된 WHERE 절은 데이터 소스의 기본 행을 올바르게 식별하지 못할 수 있습니다.
이진 C 데이터에 대해 null 길이가 아닌 버퍼를 지정하세요. 커서 라이브러리는 SQLBindCol의 StrLen_or_IndPtr 인자가 null이 아닐 경우에만 캐시에 길이 버퍼를 할당합니다. TargetType 인자가 SQL_C_BINARY되면 커서 라이브러리는 데이터로부터 WHERE 절을 구성하기 위해 이진 데이터의 길이를 요구합니다. SQL_C_BINARY 열에 길이 버퍼가 없고 애플리케이션이 SQLGetData 를 호출하거나 위치 처리된 업데이트 또는 삭제 문구를 실행하려 할 경우, 커서 라이브러리는 SQL_ERROR와 SQLSTATE SL014를 반환합니다(위치된 요청이 발행되었고 모든 열 수 필드가 버퍼링된 것은 아닙니다).
null 가능한 열에 대해 비null 길이 버퍼를 지정하세요. 커서 라이브러리는 SQLBindCol의 StrLen_or_IndPtr 인자가 null이 아닐 경우에만 캐시에 길이 버퍼를 할당합니다. SQL_NULL_DATA가 길이 버퍼에 저장되기 때문에, 커서 라이브러리는 길이 버퍼가 지정되지 않은 열은 비영제 가능하다고 가정합니다. null 가능 열에 길이가 지정되지 않은 경우, 커서 라이브러리는 해당 열의 데이터 값을 사용하는 WHERE 절을 생성합니다. 이 조항은 행을 올바르게 식별하지 못합니다.