The current Firebird ODBC driver the cursors Dynamic and Keyset will be modified to use cursor Static. As such it is not possible to update sets. For best performance use the use the cursor ForwardOnly. The read operators: (SQLFetch, SQLExtendedFetch, SQLScrollFetch) use SQL_ROWSET_SIZE and SQL_ATTR_ROW_ARRAY_SIZE. For best performance using blob fields use the operator SQLBindParameter (regardless of the size of the blob field) as this will work much faster than using SQLPutData/ SQLGetData.
For more details of how to do this and for other advanced topics please look at the examples.