对于使用ODBC连接到Oracle 10.2.0.3.0的第三方web服务,我遇到了一个非常奇怪的问题。我已经编写了一个.NET客户端,它生成与web服务相同的SQL,这样我就可以知道发生了什么。x64服务由处于x64模式的IIS6托管,因此我们使用Oracle客户端。
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,然后再将其转换为number,如下所示:
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语句工作,因为我不能修改它的代码。
和指针非常感谢!:-)
致以最好的问候,Mats
发布于 2010-04-27 15:01:21
这是一个甲骨文的漏洞。:-(
我认为这与Oracle客户端有关,但我找不到任何有关它的信息。终于在oracle论坛上找到了这个页面:http://forums.oracle.com/forums/thread.jspa?threadID=862588
该错误的编号为5128512,已在补丁级别10204中修复。
希望这能对其他人有所帮助。
https://stackoverflow.com/questions/2698558
复制相似问题