Cursors
The
RWDBCursor class of the DB Interface Module is implemented for Sybase Open Client Client-Library using client
ct_cursor() routines. These routines are subject to many restrictions:
Scrolling writable cursors are not supported by the Client-Library. Write operations on scrolling cursors result in an
RWDBStatus::notSupported error.
There must be a unique index on every table involved in every cursor operation. An error results if any table does not have a unique index.
Since Client-Library supports server side cursors, updating a primary key column may result in problems such as multiple updates to the same row. In general, applications should only update columns that do not have primary key constraint. Neither this Access Module nor Client-Library prevents the application from updating a primary key column.
For sequential cursors, the application can control the number of rows fetched from the server to improve network performance, using the
rowsPerCursorFetch() method on
RWDBSybCtLibSystemHandle, a system handle class that provides access to the native Sybase API. (For more information, see its entry in the
SourcePro API Reference Guide.) Regardless of the number of rows fetched from the server, calling
RWDBCursor::fetchRow() always returns a single row and the rest of the rows are internally buffered within Client-Library.
In the case of multiple row fetches, the current row as perceived by the server is not the same as the current row as perceived by the application. Client-Library implements updates for the current row as perceived by the application.