Condividi tramite


Dimensione del set di righe del cursore

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

I cursori ODBC non si limitano a recuperare una sola riga alla volta. Possono recuperare più righe in ogni chiamata a SQLFetch o SQLFetchScroll. Quando si usa un database client/server, ad esempio Microsoft SQL Server, è più efficiente recuperare più righe alla volta. Il numero di righe restituite in un recupero viene chiamato dimensione del set di righe e viene specificato usando il SQL_ATTR_ROW_ARRAY_SIZE di SQLSetStmtAttr.

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

I cursori con una dimensione del set di righe maggiore di 1 vengono definiti cursori a blocchi.

Sono disponibili due opzioni per associare le colonne dei set di risultati per i cursori a blocchi:

  • Associazione per colonna

    Ogni colonna viene associata a una matrice di variabili. Ogni matrice include lo stesso numero di elementi come dimensione del set di righe.

  • Associazione per riga

    Una matrice viene compilata utilizzando strutture che contengono i dati e gli indicatori per tutte le colonne di una riga. La matrice include lo stesso numero di strutture come dimensione del set di righe.

Quando viene usata un'associazione a livello di colonna o riga, ogni chiamata a SQLFetch o SQLFetchScroll riempie le matrici associate con i dati del set di righe recuperato.

È anche possibile usare SQLGetData per recuperare i dati delle colonne da un cursore a blocchi. Poiché SQLGetData funziona una riga alla volta, è necessario chiamare SQLSetPos per impostare una riga specifica nel set di righe come riga corrente prima di chiamare SQLGetData.

Il driver ODBC di SQL Server Native Client offre un'ottimizzazione usando set di righe per recuperare rapidamente un intero set di risultati. Per usare questa ottimizzazione, impostare gli attributi del cursore sui valori predefiniti (forward-only, read-only, rowset size = 1) al momento della chiamata di SQLExecDirect o SQLExecute . Il driver ODBC di SQL Server Native Client configura un set di risultati predefinito. Questa soluzione risulta più efficiente dei cursori del server quando si trasferiscono risultati al client senza scorrimento. Al termine dell'esecuzione dell'istruzione, aumentare la dimensione del set di righe e utilizzare l'associazione per colonna o per riga. In questo modo SQL Server usa un set di risultati predefinito per inviare le righe dei risultati in modo efficiente al client, mentre il driver ODBC di SQL Server Native Client esegue continuamente il pull delle righe dai buffer di rete nel client.

Vedi anche

Proprietà del cursore