Rowsetgröße
Welche Rowsetgröße verwendet werden soll, hängt von der Anwendung ab. Bildschirmbasierte Anwendungen folgen häufig einer von zwei Strategien. Die erste besteht darin, die Rowsetgröße auf die Anzahl der Zeilen festzulegen, die auf dem Bildschirm angezeigt werden. wenn der Benutzer die Größe des Bildschirms ändert, ändert die Anwendung die Zeilensatzgröße entsprechend. Die zweite besteht darin, die Rowsetgröße auf eine größere Zahl festzulegen, z. B. 100, wodurch die Anzahl der Aufrufe an die Datenquelle reduziert wird. Die Anwendung scrollt nach Möglichkeit lokal innerhalb des Rowsets und ruft neue Zeilen nur dann ab, wenn er außerhalb des Rowsets scrollt.
Andere Anwendungen, z. B. Berichte, neigen dazu, die Rowsetgröße auf die größte Anzahl von Zeilen festzulegen, die die Anwendung vernünftig verarbeiten kann – mit einem größeren Rowset wird der Netzwerkaufwand pro Zeile manchmal reduziert. Genau wie groß ein Rowset sein kann, hängt von der Größe jeder Zeile und der verfügbaren Arbeitsspeichermenge ab.
Die Rowset-Größe wird durch einen Aufruf von SQLSetStmtAttr mit einem Attributargument von SQL_ATTR_ROW_ARRAY_SIZE festgelegt. Die Anwendung kann die Rowsetgröße ändern, neue Rowsetpuffer binden (durch Aufrufen von SQLBindCol oder Angeben eines Bindungsoffsets), auch nachdem Zeilen abgerufen wurden, oder beides. Die Auswirkungen der Änderung der Rowset-Größe hängen von der Funktion ab:
SQLFetch und SQLFetchScroll verwenden die Rowsetgröße zum Zeitpunkt des Aufrufs, um zu bestimmen, wie viele Zeilen abgerufen werden sollen. SQLFetchScroll mit einer FetchOrientation von SQL_FETCH_NEXT erhöht den Cursor jedoch basierend auf dem Rowset des vorherigen Abrufs und ruft dann ein Rowset basierend auf der aktuellen Rowsetgröße ab.
SQLSetPos verwendet die Rowsetgröße, die ab dem vorherigen Aufruf von SQLFetch oder SQLFetchScroll wirksam ist, da SQLSetPos auf einem bereits festgelegten Rowset arbeitet. SQLSetPos übernimmt auch die neue Rowsetgröße, wenn SQLBulkOperations aufgerufen wurde, nachdem die Rowsetgröße geändert wurde.
SQLBulkOperations verwendet die rowset-Größe zum Zeitpunkt des Aufrufs , da sie Vorgänge für eine Tabelle ausführt, die von allen abgerufenen Rowset unabhängig ist.