Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Många program lägger mycket tid på att överföra data i nätverket. En del av den här tiden ägnas faktiskt åt att överföra data över nätverket, och en del av den tas i anspråk för nätverkets överliggande kostnader, till exempel det anrop som drivrutinen gör för att begära en rad data. Den senare tiden kan minskas om programmet använder block eller feta markörer effektivt, vilket kan returnera flera rader samtidigt.
Ett program har alltid möjlighet att använda en blockmarkör. På datakällor från vilka endast en rad i taget kan hämtas måste blockmarkörer simuleras i drivrutinen. Detta kan göras genom att utföra flera hämtningar av enskilda rader. Även om det är osannolikt att detta ger några prestandavinster, öppnar det möjligheter för program. Sådana program kommer sedan att uppleva prestandaökningar när DBMSs implementerar blockmarkörer internt och de drivrutiner som är associerade med dessa DBMSs exponerar dem.
Raderna som returneras i en enda hämtning med en blockmarkör kallas raduppsättningen. Det är viktigt att inte förväxla raduppsättningen med resultatuppsättningen. Resultatuppsättningen underhålls vid datakällan, medan raduppsättningen underhålls i programbuffertar. Även om resultatuppsättningen är fast är raduppsättningen inte – den ändrar position och innehåll varje gång en ny uppsättning rader hämtas. Precis som en enradsmarkör, till exempel den traditionella sql-markören för vidarebefordran, pekar på en aktuell rad pekar en blockmarkör på raduppsättningen, som kan betraktas som aktuella rader.
Om du vill utföra åtgärder som körs på en enskild rad när flera rader har hämtats måste programmet först ange vilken rad som är den aktuella raden. Den aktuella raden krävs av anrop till SQLGetData och positionerade uppdaterings- och borttagningsinstruktioner. När en blockmarkör först returnerar en raduppsättning är den aktuella raden den första raden i raduppsättningen. Om du vill ändra den aktuella raden anropar programmet SQLSetPos eller SQLBulkOperations (för att uppdatera efter bokmärke). Följande bild visar relationen mellan resultatuppsättningen, raduppsättningen, aktuell rad, raduppsättningsmarkören och blockmarkören. Mer information finns i Använda blockmarkörer, senare i det här avsnittet, och Positioned Update and Delete Statements and Update Data with SQLSetPos (Placera uppdaterings- och borttagningsuttryck och uppdatera data med SQLSetPos).
Om en markör är en blockmarkör är oberoende av om den är rullningsbar. Det mesta av arbetet i ett rapportprogram används till exempel för att hämta och skriva ut rader. På grund av detta fungerar det snabbast med en framåtriktad blockmarkör. Den använder en framåtriktad markör för att undvika kostnaden för en rullningsbar markör och en blockmarkör för att minska nätverkstrafiken.
Det här avsnittet innehåller följande avsnitt.