Support for block cursors is built into ODBC 3.x. SQLFetch can be used only for multirow fetches when called in ODBC 3.x; if an ODBC 2.x application calls SQLFetch, it will open only a single-row, forward-only cursor. When an ODBC 3.x application calls SQLFetch in an ODBC 2.x driver, it returns a single row unless the driver supports SQLExtendedFetch. For more information, see Appendix G, “Driver Guidelines for Backward Compatibility.”
To use block cursors, the application sets the rowset size, binds the rowset buffers (as described in the previous section), optionally sets the SQL_ATTR_ROWS_FETCHED_PTR and SQL_ATTR_ROW_STATUS_PTR statement attributes, and calls SQLFetch or SQLFetchScroll to fetch a block of rows. Note that the application can change the rowset size and bind new rowset buffers (by calling SQLBindCol or specifying a bind offset) even after rows have been fetched.