I stumbled on an old post describing how to implement bulk row updating on a CRecordset.
First, you have to implement bulk row fetching on your recordset(You can also see this post for an example)
Once you recordset works for fetching data, it's quite simple.
//Declare your recordset
CMyRecordsetBulk regSetBulk(&myDatabase);
//Open it
regSetBulk.Open(NULL, NULL, CRecordset::useMultiRowFetch);
//Select the row you want to change
regSetBulk.SetRowsetCursorPosition(nRow);
//Update the value(s) you need to change.
regSetBulk.m_pnPrecision = 21;
//Set the length of the data in the field you modified (the "Precision" field is a byte)
regSetBulk.m_plnPrecision = 1;
//Do the same thing for a couple of other rows
regSetBulk.SetRowsetCursorPosition(++nRow);
regSetBulk.m_pnPrecision = 32;
regSetBulk.m_plnPrecision = 1;
regSetBulk.SetRowsetCursorPosition(++nRow);
regSetBulk.m_pnPrecision = 21;
regSetBulk.m_plnPrecision = 1;
regSetBulk.SetRowsetCursorPosition(++nRow);
regSetBulk.m_pnPrecision = 12;
regSetBulk.m_plnPrecision = 1;
//Update the rows and check for errors
int nRetCode;
AFX_ODBC_CALL(::SQLSetPos(regSetBulk.m_hstmt, NULL, SQL_UPDATE, SQL_LOCK_NO_CHANGE));
regSetBulk.CheckRowsetError(nRetCode);