2010-04-23 101 views
0

我对使用到Oracle 10.2.0.3.0的ODBC连接的第三方Web服务存在一个非常奇怪的问题。我写了一个.NET客户端,它可以生成与Web服务相同的SQL,以便我可以了解发生了什么。 Web服务由处于x64模式的IIS 6托管,因此我们使用Oracle x64客户端。Oracle ODBC x64 - 在选择一个数字(9)列时变0 0

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 

但是,当我执行完全相同的SQL在同一个machi上使用相同的DSN NE我得到这个:

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

我同意ODBC * *应该工作,但你看着ODP.NET? – 2010-04-23 12:51:10

+0

是的,我们使用它的另一个项目和它的工作原理很好,问题在于我们购买的第三方网络服务不能改变...... .NET c我写的只是简单地执行与Web服务相同的SQL。我写了它,所以我可以看到会发生什么。 – MatsL 2010-04-23 13:44:44

+0

这个问题可能出现在.NET数据访问代码中。请说明你的'OdbcCommand'和'OdbcParameter'对象是如何初始化和使用的。 – 2010-04-23 15:53:22

回答

0

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

我想它有一些东西需要与Oracle客户端,但我无法找到任何关于它的信息,终于找到了这个网页上的Oracle论坛:http://forums.oracle.com/forums/thread.jspa?threadID=862588

的错误是号码5128512和固定在补丁级别10204.

希望这可以帮助别人。