Partilhar via


Tamanho do conjunto de linhas de cursor

Os cursores ODBC não se limitam a buscar uma linha de cada vez. Eles podem recuperar várias linhas em cada chamada para SQLFetch ou SQLFetchScroll. Quando você está trabalhando com um banco de dados cliente/servidor, como o Microsoft SQL Server, é mais eficaz buscar várias linhas de uma vez. O número de linhas retornado em uma busca é chamado de tamanho do conjunto de linhas e é especificado com SQL_ATTR_ROW_ARRAY_SIZE de SQLSetStmtAttr.

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

Os cursores com um tamanho de conjunto de linhas maior que 1 são chamados de cursores em bloco.

Há duas opções para associar colunas do conjunto de resultados para cursores em bloco:

  • Associação de coluna

    Cada coluna é associada a uma matriz de variáveis. Cada matriz possui o mesmo número de elementos que o tamanho do conjunto de linhas.

  • Associação de linha

    Uma matriz baseada em estruturas que armazenam os dados e indicadores de todas as colunas em uma linha. A matriz tem o mesmo número de estruturas que o tamanho do conjunto de linhas.

Quando um ou outro modo de associação é usado, toda chamada para SQLFetch ou SQLFetchScroll preenche as matrizes associadas com dados do conjunto de linhas recuperado.

SQLGetData também pode ser usado para recuperar dados de coluna de um cursor em bloco. Pelo fato de SQLGetData trabalhar em uma linha de cada vez, SQLSetPos deve ser chamado para definir uma linha específica no conjunto de linhas como a linha atual antes de chamar SQLGetData.

O driver ODBC do SQL Server Native Client oferece uma otimização que usa conjuntos de linhas para recuperar rapidamente um conjunto de resultados inteiro. Para usar essa otimização, defina os atributos do cursor com seus valores padrão (forward-only, read-only, rowset size = 1) no momento em que SQLExecDirect ou SQLExecute é chamado. O driver ODBC do SQL Server Native Client configura um conjunto de resultados padrão. Esse procedimento é mais eficaz do que o uso de cursores de servidor ao transferir resultados para o cliente sem fazer rolagem. Depois que a instrução tiver sido executada, aumente o tamanho do conjunto de linhas e use a associação de coluna ou de linha. Isso permite que o SQL Server use um conjunto de resultados padrão para enviar linhas de resultados ao cliente, ao passo que o driver ODBC do SQL Server Native Client continua a receber linhas dos buffers de rede no cliente.

Consulte também

Conceitos