Я пытаюсь прочитать числовые / десятичные / денежные столбцы из SQL Server через ODBC следующим образом:
SQL_NUMERIC_STRUCT decimal;
SQLGetData(hSqlStmt, iCol, SQL_C_NUMERIC, &decimal, sizeof(decimal), &indicator);
Все эти типы возвращаются как структура SQL_NUMERIC_STRUCT, и я указываю тип SQL_C_NUMERIC для SQLGetData () API.
В базе данных столбец определен, например, как decimal(18, 4)
или money
.Но проблема в том, что для возвращаемых данных decimal.precision
всегда равно 38 (максимально возможное значение), а decimal.scale
всегда равно нулю.Таким образом, если фактическое сохраненное число равно 12,65 , возвращаемое значение в структуре SQL_NUMERIC_STRUCT равно 12 .Так что дробная часть просто отбрасывается по очень странной причине.
Что я могу делать не так?