Если при получении числовых значений или результатов функции типа count не указывать третий параметр в GetFieldValue как SQL_C_SLONG, то возникает исключение "Ошибка в столбце 1. Числовое значение выходит за пределы допустимого диапазона". Если только возвращаемое значение меньше 100, то все порядке. База данных - ORACLE. Явно прописывать получаемый тип очень бы не хотелось, есть ли какое решение?
Простой пример для демонстрации привожу
CDatabase base;
base.OpenEx(_T("DSN=db;UID=user;PWD=password"));
CRecordset rs(&base);
rs.Open(CRecordset::forwardOnly, _T("select 101 from dual"), CRecordset::readOnly);
CDBVariant var;
try {
rs.GetFieldValue((short)0, var);
}
catch(CException *e) {
char buffer[255];
e->GetErrorMessage(buffer, 255);
}