다음을 통해 공유


커서 옵션 설정(ODBC)

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)

커서 옵션을 설정하려면 SQLSetStmtAttr를 호출하여 설정하거나 SQLGetStmtAttr를 호출하여 커서 동작을 제어하는 문 옵션을 가져옵니다.

Attribute 설명
SQL_ATTR_CURSOR_TYPE 정방향 전용, 정적, 동적 또는 키 집합 기반의 커서 유형
SQL_ATTR_CONCURRENCY 읽기 전용, 잠금, 타임스탬프를 사용한 낙관적 또는 값을 사용한 낙관적 동시성 제어 옵션
SQL_ATTR_ROW_ARRAY_SIZE 각 인출에서 검색된 행 수
SQL_ATTR_CURSOR_SENSITIVITY 다른 연결에서 만든 커서 행에 대한 업데이트를 표시하거나 표시하지 않는 커서
SQL_ATTR_CURSOR_SCROLLABLE 앞뒤로 스크롤할 수 있는 커서

이러한 특성의 기본값(전달 전용, 읽기 전용, 행 집합 크기 1)은 서버 커서를 사용하지 않습니다. 서버 커서를 사용하려면 이러한 특성 중 하나 이상을 기본값이 아닌 값으로 설정해야 하며 실행 중인 문은 단일 SELECT 문 또는 단일 SELECT 문을 포함하는 저장 프로시저여야 합니다. 서버 커서를 사용하는 경우 SELECT 문은 서버 커서에서 지원되지 않는 절(COMPUTE, COMPUTE BY, FOR BROWSE 및 INTO)을 사용할 수 없습니다.

SQL_ATTR_CURSOR_TYPE 및 SQL_ATTR_CONCURRENCY 설정하거나 SQL_ATTR_CURSOR_SENSITIVITY 및 SQL_ATTR_CURSOR_SCROLLABLE 설정하여 사용되는 커서 유형을 제어할 수 있습니다. 커서 동작을 지정할 때 이 두 방법을 함께 사용하면 안 됩니다.

예제

A. 동적 커서 설정

다음 예에서는 문 핸들을 할당하고, 행 버전 관리 낙관적 동시성을 사용하여 동적 커서 유형을 설정한 다음 SELECT를 실행합니다.

retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);  
retcode = SQLSetStmtAttr(hstmt1, SQL_ATTR_CURSOR_TYPE, (SQLPOINTER)SQL_CURSOR_DYNAMIC, SQL_IS_INTEGER);  
retcode = SQLSetStmtAttr(hstmt1, SQL_ATTR_CONCURRENCY, SQLPOINTER)SQL_CONCUR_ROWVER, SQL_IS_INTEGER);  
retcode = SQLExecDirect(hstmt1, SELECT au_lname FROM authors", SQL_NTS);  

B. 스크롤 가능하고 중요한 커서 설정

다음 샘플에서는 문 핸들을 할당하고 스크롤 가능한 중요한 커서를 설정한 다음 SELECT를 실행합니다.

retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);  
  
// Set the cursor options and execute the statement.  
retcode = SQLSetStmtAttr(hstmt1, SQL_ATTR_CURSOR_SCROLLABLE, SQLPOINTER)SQL_SCROLLABLE, SQL_IS_INTEGER);  
retcode = SQLSetStmtAttr(hstmt1, SQL_ATTR_CURSOR_SENSITIVITY, SQLPOINTER)SQL_INSENSITIVE, SQL_IS_INTEGER);  
retcode = SQLExecDirect(hstmt1, select au_lname from authors", SQL_NTS);  

참고 항목

쿼리 실행 방법 항목(ODBC)