私は次のようにODBC経由でSQL Serverから数値/小数点/お金の列を読み取ろう:SQL Serverからnumeric/decimal/money列を読み取る方法は?
SQL_NUMERIC_STRUCT decimal;
SQLGetData(hSqlStmt, iCol, SQL_C_NUMERIC, &decimal, sizeof(decimal), &indicator);
すべてのこれらのタイプは、SQL_NUMERIC_STRUCT構造体として返され、私はのSQLGetData()APIにSQL_C_NUMERIC種類を指定しています。
データベースでは、列は、たとえばdecimal(18, 4)
、またはmoney
と定義されています。しかし、問題は、返されたデータは常にdecimal.precision
が38(最大可能)に設定され、decimal.scale
は常にゼロに設定されていることです。したがって、実際に格納されている数値が12.65の場合、SQL_NUMERIC_STRUCT構造体の戻り値はになります。したがって、非常に奇妙な理由により、小数部分は単に破棄されます。
どうしたらいいですか?