SQLSetPos를 사용하여 데이터 업데이트

애플리케이션은 SQLSetPos를 사용하여 행 집합 의 행을 업데이트하거나 삭제할 수 있습니다. SQLSetPos를 호출하는 것은 SQL 문을 생성하고 실행하는 편리한 대안입니다. 데이터 원본이 배치된 SQL 문을 지원하지 않는 경우에도 ODBC 드라이버에서 위치 업데이트를 지원할 수 있습니다. 함수 호출을 통해 완전한 데이터베이스 액세스를 달성하는 패러다임의 일부입니다.

SQLSetPos는 현재 행 집합에서 작동하며 SQLFetchScroll을 호출한 후에만 사용할 수 있습니다. 애플리케이션은 업데이트, 삭제 또는 삽입할 행 수를 지정하고 드라이버는 행 집합 버퍼에서 해당 행에 대한 새 데이터를 검색합니다. SQLSetPos를 사용하여 지정된 행을 현재 행으로 지정하거나 데이터 원본에서 행 집합의 특정 행을 새로 고칠 수도 있습니다.

행 집합 크기는 특성 인수가 SQL_ATTR_ROW_ARRAY_SIZE SQLSetStmtAttr 호출의해 설정됩니다. 그러나 SQLSetPos는 SQLFetch 또는 SQLFetchScroll호출한 후에만 새 행 집합 크기를 사용합니다. 예를 들어 행 집합 크기가 변경되면 SQLSetPos가 호출되고 SQLFetch 또는 SQLFetchScroll이 호출되고 SQLSetPos대한 호출은 이전 행 집합 크기를 사용하는 반면 SQLFetch 또는 SQLFetchScroll은 새 행 집합 크기를 사용합니다.

행 집합의 첫 번째 행 번호는 1입니다. SQLSetPosRowNumber 인수는 행 집합의 행을 식별해야 합니다. 즉, 해당 값은 1과 가장 최근에 가져온 행 수(행 집합 크기보다 작을 수 있음) 사이의 범위에 있어야 합니다. RowNumber가 0이면 행 집합의 모든 행에 작업이 적용됩니다.

관계형 데이터베이스와의 상호 작용은 대부분 SQL 을 통해 수행되므로 SQLSetPos 는 널리 지원되지 않습니다. 그러나 드라이버는 UPDATE 또는 DELETE 문을 생성하고 실행하여 쉽게 에뮬레이트할 수 있습니다.

SQLSetPos에서 지원하는 작업을 확인하기 위해 애플리케이션은 커서 유형에 따라 SQL_DYNAMIC_CURSOR_ATTRIBUTES1, SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1, SQL_KEYSET_CURSOR_ATTRIBUTES1 또는 SQL_STATIC_CURSOR_ATTRIBUTES1 정보 옵션을 사용하여 SQLGetInfo를 호출합니다.

이 섹션에서는 다음 항목을 다룹니다.