我對使用到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