다음을 통해 공유


커서 행 집합 크기

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

ODBC 커서는 한 번에 하나의 행을 가져오는 것으로 제한되지 않습니다. SQLFetch 또는 SQLFetchScroll에 대한 각 호출에서 여러 행을 검색할 수 있습니다. Microsoft SQL Server와 같은 클라이언트/서버 데이터베이스를 사용하는 경우 한 번에 여러 행을 가져오는 것이 더 효율적입니다. 인출에서 반환되는 행 수를 행 집합 크기라고 하며 SQLSetStmtAttrSQL_ATTR_ROW_ARRAY_SIZE 사용하여 지정됩니다.

SQLUINTEGER uwRowsize;  
SQLSetStmtAttr(m_hstmt, SQL_ATTR_ROW_ARRAY_SIZE, (SQLPOINTER)uwRowsetSize, SQL_IS_UINTEGER);  

행 집합 크기가 1보다 큰 커서를 블록 커서라고 합니다.

블록 커서에 대한 결과 집합 열을 바인딩하는 두 가지 옵션이 있습니다.

  • 열 단위 바인딩

    각 열이 변수 배열에 바인딩됩니다. 각 배열에는 행 집합 크기와 동일한 수의 요소가 있습니다.

  • 행 단위 바인딩

    배열은 행의 모든 열에 대한 데이터 및 표시기를 포함하는 구조를 사용하여 빌드됩니다. 배열의 구조 수는 행 집합 크기와 동일합니다.

열 단위 또는 행 단위 바인딩을 사용하는 경우 SQLFetch 또는 SQLFetchScroll에 대한 각 호출은 바인딩된 배열을 검색된 행 집합의 데이터로 채웁니다.

SQLGetData 를 사용하여 블록 커서에서 열 데이터를 검색할 수도 있습니다. SQLGetData는 한 번에 한 행씩 작동하므로 SQLGetData를 호출하기 전에 행 집합의 특정 행을 현재 행으로 설정하려면 SQLSetPos를 호출해야 합니다.

SQL Server Native Client ODBC 드라이버는 행 집합을 사용하여 전체 결과 집합을 신속하게 검색하는 최적화를 제공합니다. 이 최적화를 사용하려면 SQLExecDirect 또는 SQLExecute가 호출될 때 커서 특성을 기본값(정방향 전용, 읽기 전용, 행 집합 크기 = 1)으로 설정합니다. SQL Server Native Client ODBC 드라이버는 기본 결과 집합을 설정합니다. 스크롤 없이 결과를 클라이언트로 전송하는 경우 이 방법이 서버 커서보다 더 효율적입니다. 문이 실행된 후 행 집합 크기를 늘리고 열 단위 또는 행 단위 바인딩을 사용합니다. 이렇게 하면 SQL Server에서 기본 결과 집합을 사용하여 결과 행을 클라이언트에 효율적으로 보낼 수 있으며, SQL Server Native Client ODBC 드라이버는 클라이언트의 네트워크 버퍼에서 행을 지속적으로 끌어올 수 있습니다.

참고 항목

커서 속성