当前使用 ODBC API 调用Oracle Client 10g (所有版本)、11gR1 (v11.1.0.6) 的C++ 应用程序返回一个 LONG(4 字节整数)
SELECT COUNT(*) from tablename
将 Oracle 客户端更改为 11gR1 (v11.1.0.7) 或更高版本(11.2.xy 等),并且同一语句返回 DOUBLE(相当于 oracle NUMBER 数据类型的 8 字节浮点值)。
由于后端数据库是相同的版本,因此必须有一个客户端设置(我推测)已更改此聚合 SQL 函数的默认行为以返回双精度而不是长整数。我希望找到这样的设置,我既可以通过 ODBC API 调用以编程方式设置,也可以在 Oracle 客户端配置本身中进行设置。
我什至尝试使用SQL CAST
使其成为一个,INT
SELECT CAST(COUNT(*) AS INT) FROM tablename
但仍然返回一个DOUBLE
(8 字节浮点数)。
注意:鉴于我使用 ODBC,我已经编写了许多通用 C++ 代码,支持将返回值设为 LONG,因为 10 年来通过 ODBC 一直如此。如果可能的话,我想保持这一点,而不必在我的应用程序中编写 ORACLE 特定代码。