다음을 통해 공유


SQLSetScrollOptions 매핑

애플리케이션이 ODBC 3.x 드라이버를 통해 SQLSetScrollOptions를 호출하고 드라이버가 SQLSetScrollOptions를 지원하지 않는 경우

SQLSetScrollOptions(StatementHandle, Concurrency, KeysetSize, RowsetSize)  

는 다음과 같이 발생합니다.

  • 에 대한 호출

    SQLGetInfo(ConnectionHandle, InfoType, InfoValuePtr, BufferLength, StringLengthPtr)  
    

    SQLSetScrollOptions의 KeysetSize 인수 값에 따라 InfoType 인수를 다음 표의 값 중 하나로 설정합니다.

    KeysetSize 인수 InfoType 인수
    SQL_SCROLL_FORWARD_ONLY SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2
    SQL_SCROLL_STATIC SQL_STATIC_CURSOR_ATTRIBUTES2
    SQL_SCROLL_KEYSET_DRIVEN SQL_KEYSET_CURSOR_ATTRIBUTES2
    SQL_SCROLL_DYNAMIC SQL_DYNAMIC_CURSOR_ATTRIBUTES2
    RowsetSize 인수보다 큰 값 SQL_KEYSET_CURSOR_ATTRIBUTES2

    KeysetSize 인수의 값이 앞의 표에 나열되지 않은 경우 SQLSetScrollOptions에 대한 호출은 SQLSTATE S1107(행 값이 범위를 벗어났음)을 반환하며 다음 단계 중 어느 것도 수행되지 않습니다.

    그런 다음 드라이버 관리자는 SQLSetScrollOptions의 동시성 인수 값에 따라 SQLGetInfo 호출에서 반환된 *InfoValuePtr적절한 비트가 설정되어 있는지 확인합니다.

    동시성 인수 InfoType 설정
    SQL_CONCUR_READ_ONLY SQL_CA2_READ_ONLY_CONCURRENCY
    SQL_CONCUR_LOCK SQL_CA2_LOCK_CONCURRENCY
    SQL_CONCUR_ROWVER SQL_CA2_ROWVER_CONCURRENCY
    SQL_CONCUR_VALUES SQL_CA2_VALUES_CONCURRENCY

    동시성 인수가 이전 표의 값 중 하나가 아닌 경우 SQLSetScrollOptions에 대한 호출은 SQLSTATE S1108(범위를 벗어난 동시성 옵션)을 반환하며 다음 단계 중 어느 것도 수행되지 않습니다. 이전 표에 표시된 대로 적절한 비트가 *InfoValuePtr에서 동시성 인수에 해당하는 값 중 하나로 설정되지 않은 경우 SQLSetScrollOptions대한 호출은 SQLSTATE S1C00(드라이버를 사용할 수 없음)을 반환하며 다음 단계 중 어느 것도 수행되지 않습니다.

  • 에 대한 호출

    SQLSetStmtAttr(StatementHandle, SQL_ATTR_CURSOR_TYPE, ValuePtr, 0)  
    

    SQLSetScrollOptions의 KeysetSize 인수 값에 따라 *ValuePtr을 다음 표의 값 중 하나로 설정합니다.

    KeysetSize 인수 *ValuePtr
    SQL_SCROLL_FORWARD_ONLY SQL_CURSOR_FORWARD_ONLY
    SQL_SCROLL_STATIC SQL_CURSOR_STATIC
    SQL_SCROLL_KEYSET_DRIVEN SQL_CURSOR_KEYSET_DRIVEN
    SQL_SCROLL_DYNAMIC SQL_CURSOR_DYNAMIC
    RowsetSize 인수보다 큰 값 SQL_CURSOR_KEYSET_DRIVEN
  • 에 대한 호출

    SQLSetStmtAttr(StatementHandle, SQL_ATTR_CONCURRENCY, ValuePtr, 0)  
    

    *ValuePtr이 SQLSetScrollOptions의 동시성 인수로 설정된 경우

  • SQLSetScrollOptions 호출의 KeysetSize 인수가 양수이면 다음을 호출합니다.

    SQLSetStmtAttr(StatementHandle, SQL_ATTR_KEYSET_SIZE, ValuePtr, 0)  
    

    *ValuePtr이 SQLSetScrollOptions의 KeysetSize 인수로 설정된 경우

  • 에 대한 호출

    SQLSetStmtAttr(StatementHandle, SQL_ROWSET_SIZE, ValuePtr, 0)  
    

    *ValuePtr이 SQLSetScrollOptions의 RowsetSize 인수로 설정된 경우

    참고 항목

    드라이버 관리자가 SQLSetScrollOptions를 지원하지 않는 ODBC 3.x 드라이버로 작업하는 애플리케이션에 대해 SQLSetScrollOptions를 매핑하면 드라이버 관리자는 SQL_ATTR_ROW_ARRAY_SIZE 문 특성이 아닌 SQL_ROWSET_SIZE 문 옵션을 SQLSetScrollOptionRowsetSize 인수로 설정합니다. 따라서 SQLFetch 또는 SQLFetchScroll을 호출하여 여러 행을 가져올 때 애플리케이션에서 SQLSetScrollOptions를 사용할 수 없습니다. SQLExtendedFetch를 호출하여 여러 행을 페치할 때만 사용할 수 있습니다.