对于使用与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语句起作用,因为我无法修改它的代码。
非常感谢指针! : - )
祝你好运, 垫
答案 0 :(得分:0)
Bah,这是一个Oracle错误。 : - (
我认为它与Oracle客户端有关,但我找不到任何有关它的信息。终于在oracle论坛上发现了这个页面:http://forums.oracle.com/forums/thread.jspa?threadID=862588
该错误号为5128512,已在补丁级别10204中修复。
希望这对其他人有帮助。