【发布时间】:2012-02-08 14:25:01
【问题描述】:
我尝试通过以下方式通过 ODBC 从 SQL Server 读取数字/十进制/货币列:
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。所以小数部分被简单地丢弃了,原因很奇怪。
我做错了什么?
【问题讨论】:
标签: sql-server visual-c++ odbc