위치가 지정된 업데이트 및 삭제 문 처리

Important

이 기능은 이후 Windows 버전에서 제공될 예정입니다. 새 개발 작업에서 이 기능을 사용하지 말고 현재 이 기능을 사용하는 애플리케이션을 수정할 계획입니다. 드라이버의 커서 기능을 사용하는 것이 좋습니다.

커서 라이브러리는 이러한 문의 WHERE CURRENT OF 절을 바인딩된 각 열의 캐시에 저장된 값을 열거하는 WHERE 절로 바꿔 위치가 지정된 업데이트 및 삭제 문을 지원합니다. 커서 라이브러리는 새로 생성된 UPDATEDELETE 문을 드라이버에 전달하여 실행합니다. 배치된 업데이트 문의 경우 커서 라이브러리는 행 집합 버퍼의 값에서 캐시를 업데이트하고 행 상태 배열의 해당 값을 SQL_ROW_UPDATED 설정합니다. 위치가 지정된 delete 문의 경우 행 상태 배열의 해당 값을 SQL_ROW_DELETED 설정합니다.

주의

현재 행을 식별하기 위해 커서 라이브러리에서 생성된 WHERE 절은 행을 식별하거나 다른 행을 식별하거나 둘 이상의 행을 식별하지 못할 수 있습니다. 자세한 내용은 이 부록의 뒷부분에 있는 검색된 문 생성을 참조하세요.

위치 지정된 업데이트 및 삭제 문에는 다음과 같은 제한 사항이 적용됩니다.

  • 위치 지정 업데이트 및 삭제 문은 SELECT 문이 결과 집합을 생성한 경우, SELECT 문에 조인, UNION 절 또는 GROUP BY 절이 포함되지 않은 경우, 선택 목록에서 별칭 또는 식을 사용한 열이 SQLBindCol바인딩되지 않은 경우에만 사용할 수 있습니다.

  • 애플리케이션이 배치된 업데이트 또는 삭제 문을 준비하는 경우 SQLFetch 또는 SQLFetchScroll을 호출한 후에 이 작업을 수행해야 합니다. 커서 라이브러리는 준비를 위해 문을 드라이버에 제출하지만 문을 닫고 애플리케이션이 SQLExecute를 호출할 때 직접 실행합니다.

  • 드라이버가 하나의 활성 문만 지원하는 경우 커서 라이브러리는 결과 집합의 나머지 부분을 가져온 다음 위치가 지정된 업데이트 또는 삭제 문을 실행하기 전에 해당 캐시에서 현재 행 집합을 다시 설정합니다. 그런 다음 애플리케이션이 결과 집합(예: SQLNumResultCols 또는 SQLDescribeCol)에서 메타데이터를 반환하는 함수를 호출하면 커서 라이브러리가 오류를 반환합니다.

  • 업데이트가 수행될 때마다 자동으로 업데이트되는 타임스탬프 열이 포함된 테이블 열에서 위치가 지정된 업데이트 또는 삭제 문이 수행되면 타임스탬프 열이 바인딩된 경우 모든 후속 위치 업데이트 또는 삭제 문이 실패합니다. 커서 라이브러리에서 만드는 검색된 업데이트 또는 삭제 문이 업데이트할 행을 정확하게 식별하지 못하기 때문에 이 문제가 발생합니다. 타임스탬프 열에 대해 검색된 문의 값이 타임스탬프 열의 자동으로 업데이트된 값과 일치하지 않습니다.