2010-04-23 72 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.

希望這可以幫助別人。