Oracle ODBC x64 - 在选择数字(9)列时获得0

时间:2010-04-23 12:47:13

标签: .net oracle odbc 64-bit

对于使用与Oracle 10.2.0.3.0的ODBC连接的第三方Web服务,我遇到了一个非常奇怪的问题。我编写了一个.NET客户端,它生成与Web服务相同的SQL,因此我可以找到正在发生的事情。 Web服务由IIS 6托管,处于x64模式,因此我们使用Oracle x64客户端。

oracle客户端版本是10.2.0.1.0。

我有一个看起来像这样的表(我删除了一些列和名称):

SQL> describe tablename;

 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 KOD                                                VARCHAR2(30)
 ORDNING                                            NUMBER(5)
 AVGIFT                                             NUMBER(9)

然后我在SQL * Plus中发出以下声明:

SELECT KOD as kod, AVGIFT as riskPoang
FROM tablename Where upper(KODTYP) = 'OBJLIVSV_RISKVERKSAMTYP' ORDER BY ORDNING

我得到以下结果:

KOD                             RISKPOANG
------------------------------ ----------
Hög risk                               55
Mellan risk                            35
Låg risk                               15
Mycket låg risk                         5

但是当我在同一台机器上使用相同的DSN执行完全相同的SQL时,我得到了这个:

Values
Kod: Hög risk           RiskPoäng: 0
Kod: Mellan risk        RiskPoäng: 0
Kod: Låg risk           RiskPoäng: 0
Kod: Mycket låg risk    RiskPoäng: 0

如果我先将数字转换为varchar,然后再将数字转换为数字,如下所示:

SELECT KOD as kod, to_number(to_char(AVGIFT, '99'), '9999999999') as riskPoang
FROM tablename Where upper(KODTYP) = 'OBJLIVSV_RISKVERKSAMTYP' ORDER BY ORDNING

我得到了正确的结果:

Values
Kod: Hög risk           RiskPoäng: 55
Kod: Mellan risk        RiskPoäng: 35
Kod: Låg risk           RiskPoäng: 15
Kod: Mycket låg risk    RiskPoäng: 5

还有其他人遇到过这种情况吗?这令人难以置信的烦恼,我完全陷入困境,不知道下一步该做什么。我们有一个使用这些表的第三方Web服务,所以我必须让原始的SQL语句起作用,因为我无法修改它的代码。

非常感谢指针! : - )

祝你好运, 垫

1 个答案:

答案 0 :(得分:0)

Bah,这是一个Oracle错误。 : - (

我认为它与Oracle客户端有关,但我找不到任何有关它的信息。终于在oracle论坛上发现了这个页面:http://forums.oracle.com/forums/thread.jspa?threadID=862588

该错误号为5128512,已在补丁级别10204中修复。

希望这对其他人有帮助。