다음을 통해 공유


커서 특성 및 커서 유형

애플리케이션은 커서 형식(정방향 전용, 정적, 키 집합 기반 또는 동적)을 지정하는 대신 커서의 특성을 지정할 수 있습니다. 이를 위해 애플리케이션은 문 핸들에서 커서를 열기 전에 커서의 스크롤 가능성(SQL_ATTR_CURSOR_SCROLLABLE 문 특성을 설정하여)과 민감도(SQL_ATTR_CURSOR_SENSITIVITY 문 특성을 설정)를 선택합니다. 그런 다음 드라이버는 애플리케이션이 요청한 특성을 가장 효율적으로 제공하는 커서 유형을 선택합니다.

애플리케이션이 문 특성 SQL_ATTR_CONCURRENCY, SQL_ATTR_CURSOR_SCROLLABLE, SQL_ATTR_CURSOR_SENSITIVITY 또는 SQL_ATTR_CURSOR_TYPE 설정할 때마다 드라이버는 값이 일관성을 기본 있도록 이 네 가지 특성 집합의 다른 문 특성을 변경해야 합니다. 따라서 애플리케이션에서 커서 특성을 지정하면 드라이버는 이 암시적 선택에 따라 커서 유형을 나타내는 특성을 변경할 수 있습니다. 애플리케이션이 형식을 지정하면 드라이버는 선택한 형식의 특성과 일치하도록 다른 특성을 변경할 수 있습니다. 이러한 문 특성에 대한 자세한 내용은 SQLSetStmtAttr 함수 설명을 참조하세요.

커서 유형과 커서 특성을 모두 지정하도록 문 특성을 설정하는 애플리케이션은 애플리케이션의 요구 사항을 충족하는 드라이버에서 사용할 수 있는 가장 효율적인 방법이 아닌 커서를 가져올 위험이 있습니다.

문 특성의 암시적 설정은 다음 규칙을 따라야 한다는 점을 제외하고 드라이버 정의입니다.

  • 앞으로만 사용할 수 있는 커서는 스크롤할 수 없습니다. SQLSetStmtAttr에서 SQL_ATTR_CURSOR_SCROLLABLE 정의를 참조하세요.

  • 민감하지 않은 커서는 절대로 호환되지 않습니다(따라서 동시성은 읽기 전용임). ISO SQL 표준의 구분되지 않는 커서 정의에 기반합니다.

따라서 다음 표에 설명된 경우 문 특성의 암시적 설정이 발생합니다.

애플리케이션에서 특성을 로 설정합니다. 암시적으로 설정된 다른 특성
SQL_ATTR_CONCURRENCY to SQL_CONCUR_READ_ONLY SQL_INSENSITIVE SQL_ATTR_CURSOR_SENSITIVITY.
SQL_CONCUR_LOCK, SQL_CONCUR_ROWVER 또는 SQL_CONCUR_VALUES SQL_ATTR_CONCURRENCY 드라이버에서 정의한 대로 SQL_UNSPECIFIED 또는 SQL_SENSITIVE SQL_ATTR_CURSOR_SENSITIVITY. 구분되지 않는 커서는 항상 읽기 전용이므로 SQL_INSENSITIVE 설정할 수 없습니다.
SQL_ATTR_CURSOR_SCROLLABLE to SQL_NONSCROLLABLE SQL_ATTR_CURSOR_TYPE to SQL_CURSOR_FORWARD_ONLY
SQL_ATTR_CURSOR_SCROLLABLE to SQL_SCROLLABLE 드라이버에서 지정한 대로 SQL_CURSOR_STATIC, SQL_CURSOR_KEYSET_DRIVEN 또는 SQL_CURSOR_DYNAMIC SQL_ATTR_CURSOR_TYPE. SQL_CURSOR_FORWARD_ONLY 설정되지 않습니다.
SQL_ATTR_CURSOR_SENSITIVITY to SQL_INSENSITIVE SQL_CONCUR_READ_ONLY SQL_ATTR_CONCURRENCY.

SQL_CURSOR_STATIC SQL_ATTR_CURSOR_TYPE.
SQL_ATTR_CURSOR_SENSITIVITY to SQL_SENSITIVE 드라이버에서 지정한 대로 SQL_CONCUR_LOCK, SQL_CONCUR_ROWVER 또는 SQL_CONCUR_VALUES SQL_ATTR_CONCURRENCY. SQL_CONCUR_READ_ONLY 설정되지 않습니다.

드라이버에서 지정한 대로 SQL_CURSOR_FORWARD_ONLY, SQL_CURSOR_STATIC, SQL_CURSOR_KEYSET_DRIVEN 또는 SQL_CURSOR_DYNAMIC SQL_ATTR_CURSOR_TYPE.
SQL_ATTR_CURSOR_SENSITIVITY to SQL_UNSPECIFIED 드라이버에서 지정한 대로 SQL_CONCUR_READ_ONLY, SQL_CONCUR_LOCK, SQL_CONCUR_ROWVER 또는 SQL_CONCUR_VALUES SQL_ATTR_CONCURRENCY.

드라이버에서 지정한 대로 SQL_CURSOR_FORWARD_ONLY, SQL_CURSOR_STATIC, SQL_CURSOR_KEYSET_DRIVEN 또는 SQL_CURSOR_DYNAMIC SQL_ATTR_CURSOR_TYPE.
SQL_ATTR_CURSOR_TYPE to SQL_CURSOR_DYNAMIC SQL_SCROLLABLE SQL_ATTR_SCROLLABLE.

SQL_SENSITIVE SQL_ATTR_CURSOR_SENSITIVITY. (그러나 SQL_ATTR_CONCURRENCY SQL_CONCUR_READ_ONLY 같지 않은 경우에만. 업데이터 가능한 동적 커서는 항상 자체 트랜잭션에서 변경된 내용에 민감합니다.)
SQL_ATTR_CURSOR_TYPE to SQL_CURSOR_FORWARD_ONLY SQL_NONSCROLLABLE SQL_ATTR_CURSOR_SCROLLABLE.
SQL_ATTR_CURSOR_TYPE to SQL_CURSOR_KEYSET_DRIVEN SQL_SCROLLABLE SQL_ATTR_SCROLLABLE.

SQL_UNSPECIFIED 또는 SQL_SENSITIVE SQL_ATTR_SENSITIVITY(드라이버 정의 기준에 따라 SQL_ATTR_CONCURRENCY SQL_CONCUR_READ_ONLY 않은 경우).
SQL_ATTR_CURSOR_TYPE to SQL_CURSOR_STATIC SQL_SCROLLABLE SQL_ATTR_SCROLLABLE.

SQL_INSENSITIVE SQL_ATTR_SENSITIVITY(SQL_ATTR_CONCURRENCY SQL_CONCUR_READ_ONLY 경우).

SQL_UNSPECIFIED 또는 SQL_SENSITIVE SQL_ATTR_SENSITIVITY(SQL_ATTR_CONCURRENCY SQL_CONCUR_READ_ONLY 않은 경우).