빠른 정방향 전용 커서(ODBC)
SQL Server의 인스턴스에 연결된 경우 SQL Server Native Client ODBC 드라이버에서는 정방향 전용, 읽기 전용 커서에 대한 성능 최적화를 지원합니다. 빠른 정방향 전용 커서는 기본 결과 집합과 매우 유사한 방식으로 드라이버 및 서버에서 내부적으로 구현됩니다. 정방향 전용 커서는 높은 성능 외에도 다음과 같은 특성이 있습니다.
SQLGetData가 지원되지 않습니다. 결과 집합 열은 프로그램 변수에 바인딩되어야 합니다.
서버에서 커서 끝을 감지하면 커서를 자동으로 닫습니다. 응응 프로그램에서 SQLCloseCursor 또는 SQLFreeStmt(SQL_CLOSE)를 호출해야 하지만 드라이버가 닫기 요청을 서버로 보낼 필요가 없습니다. 따라서 서버로의 네트워크 왕복이 줄어듭니다.
응용 프로그램에서는 각 드라이버에 맞는 문 특성 SQL_SOPT_SS_CURSOR_OPTIONS를 사용하여 빠른 정방향 전용 커서를 요청합니다. SQL_CO_FFO로 설정하면 자동 인출 없이 빠른 정방향 전용 커서를 활성화합니다. SQL_CO_FFO_AF로 설정하면 자동 인출 옵션도 활성화됩니다. 자동 인출에 대한 자세한 내용은 ODBC 커서로 자동 인출 사용을 참조하십시오.
자동 인출 기능을 사용하는 빠른 정방향 전용 커서는 서버 왕복을 하나만 포함하는 작은 결과 집합을 검색하는 데 사용할 수 있습니다. 다음 단계에서 n은 반환되는 행의 개수입니다.
SQL_SOPT_SS_CURSOR_OPTIONS를 SQL_CO_FFO_AF로 설정합니다.
SQL_ATTR_ROW_ARRAY_SIZE를 n + 1로 설정합니다.
n + 1개의 행이 실제로 인출되는 경우를 대비해서 결과 열을 n + 1개 요소의 배열에 바인딩합니다.
SQLExecDirect 또는 SQLExecute를 사용하여 커서를 엽니다.
반환 상태가 SQL_SUCCESS이면 SQLFreeStmt 또는 SQLCloseCursor를 호출하여 커서를 닫습니다. 행의 모든 데이터가 바인딩된 프로그램 변수에 포함됩니다.
이러한 단계에서 SQLExecDirect 또는 SQLExecute는 자동 인출 옵션을 설정한 상태로 열기 요청을 커서에 보냅니다. 클라이언트의 해당 단일 요청에 대해 서버는 다음을 수행합니다.
커서를 엽니다.
결과 집합을 작성하고 행을 클라이언트에 보냅니다.
행 집합 크기를 결과 집합의 행 수보다 1개 많은 수로 설정했으므로 서버가 커서의 끝을 발견하고 커서를 닫습니다.