Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
ODBC-cursors zijn niet beperkt tot het ophalen van één rij tegelijk. Ze kunnen meerdere rijen ophalen in elke aanroep naar SQLFetch of SQLFetchScroll. Wanneer je werkt met een client/server-database zoals Microsoft SQL Server, is het efficiënter om meerdere rijen tegelijk op te halen. Het aantal rijen dat wordt teruggegeven bij een fetch wordt de rijsetgrootte genoemd en wordt gespecificeerd met behulp van de SQL_ATTR_ROW_ARRAY_SIZE van SQLSetStmtAttr.
SQLUINTEGER uwRowsize;
SQLSetStmtAttr(m_hstmt, SQL_ATTR_ROW_ARRAY_SIZE, (SQLPOINTER)uwRowsetSize, SQL_IS_UINTEGER);
Cursors met een rijsetgrootte groter dan 1 worden blokcursors genoemd.
Er zijn twee opties om kolommen van resultaatsets voor blokcursors te binden:
Kolomgebonden binding
Elke kolom is gebonden aan een array van variabelen. Elke array heeft hetzelfde aantal elementen als de grootte van de rijset.
Rijsgewijs binden
Een array wordt opgebouwd met structuren die de gegevens en indicatoren voor alle kolommen in een rij bevatten. De array heeft hetzelfde aantal structuren als de grootte van de rijset.
Wanneer kolom- of rijgewijze binding wordt gebruikt, vult elke aanroep naar SQLFetch of SQLFetchScroll de gebonden arrays met gegevens uit de opgehaalde rijset.
SQLGetData kan ook worden gebruikt om kolomgegevens van een blokcursor op te halen. Omdat SQLGetData één rij tegelijk werkt, moet SQLSetPos worden aangeroepen om een specifieke rij in de rijset als de huidige rij in te stellen voordat SQLGetData wordt aanroepen.
De SQL Server Native Client ODBC-driver biedt een optimalisatie met behulp van rijsets om snel een volledige resultaatset op te halen. Om deze optimalisatie te gebruiken, stel je de cursorattributen in op hun standaardwaarden (alleen vooruit, alleen-lezen, rijsetgrootte = 1) op het moment dat SQLExecDirect of SQLExecute wordt aangeroepen. De SQL Server Native Client ODBC-driver stelt een standaard resultaatset op. Dit is efficiënter dan servercursors bij het overzetten van resultaten naar de client zonder scrollen. Nadat de instructie is uitgevoerd, vergroot je de rijsetgrootte en gebruik je kolom- of rijgebonden binding. Hierdoor kan SQL Server een standaardresultaatset gebruiken om resultaatrijen efficiënt naar de client te sturen, terwijl de SQL Server Native Client ODBC-driver continu rijen uit de netwerkbuffers van de client haalt.