Compartilhar via


Tamanho do conjunto de linhas de cursor

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure PDW (Sistema de Plataforma de Análise) do Azure Synapse Analytics

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 eficiente buscar várias linhas por vez. O número de linhas retornadas em uma busca é chamado de tamanho do conjunto de linhas e é especificado usando o 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 em 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 a associação em coluna ou em linha é usada, cada chamada para SQLFetch ou SQLFetchScroll preenche as matrizes associadas com dados do conjunto de linhas recuperados.

SQLGetData também pode ser usado para recuperar dados de coluna de um cursor de bloco. Como SQLGetData funciona uma linha por 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 usando conjuntos de linhas para recuperar um conjunto de resultados inteiro rapidamente. Para usar essa otimização, defina os atributos do cursor como seus padrões (somente encaminhamento, somente leitura, tamanho do conjunto de linhas = 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 com eficiência para o cliente, enquanto o driver ODBC do SQL Server Native Client extrai continuamente linhas dos buffers de rede no cliente.

Confira também

Propriedades do cursor