我对使用到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语句才能工作,因为我无法修改它的代码。
指针非常感谢! :-)
最好的问候, 垫
我同意ODBC * *应该工作,但你看着ODP.NET? – 2010-04-23 12:51:10
是的,我们使用它的另一个项目和它的工作原理很好,问题在于我们购买的第三方网络服务不能改变...... .NET c我写的只是简单地执行与Web服务相同的SQL。我写了它,所以我可以看到会发生什么。 – MatsL 2010-04-23 13:44:44
这个问题可能出现在.NET数据访问代码中。请说明你的'OdbcCommand'和'OdbcParameter'对象是如何初始化和使用的。 – 2010-04-23 15:53:22