2010-12-07 92 views
1

因此,我建立了從SQL Server 2008 Express Edition到我們的Oracle數據庫的連接。 當我查詢基於varchar的值時,它很好,但對於任何數值,它會引發像這樣的錯誤。使用鏈接服務器的數據庫連接。 (數值)

Msg 9803, Level 16, State 1, Line 1 
Invalid data for type "numeric". 

我該如何解決這個問題?

回答

3

我碰到的這個我自己。您的錯誤是由數字字段沒有正確處理的聯繫。最簡單的修復方法是投射到您的OPENQUERY內varchar和投回數字的另一面

SELECT CONVERT(INT, YourField) AS YourField 
FROM OPENQUERY (LINKEDSERVER, 
'SELECT TO_CHAR(YourField) AS YourField FROM RemoteTable'); 
+0

額外的轉換是否會導致可能影響性能的不必要開銷? – 2011-08-02 14:09:07

1

壹個人說,他們發現了甲骨文公司的Metalink上的DocID 369814.1答案。他們表示解決方案是安裝最低版本爲10.2.0.2.20的Oracle OLEDB驅動程序。 他們安裝了Oracle客戶端10.2.0.3,然後應用適用的修補程序(在Metalink DocID 369814.1中進行了描述)。

我發現這篇文章在http://forums.oracle.com/forums/thread.jspa?threadID=337842&start=15&tstart=135

這似乎是一個比轉換爲char數據類型更好的解決方案,然後轉換回數字數據類型。我假設這些轉換會使你的表現付出代價。

1

我們在其中一個環境中遇到了同樣的問題,問題在於我們錯誤地設置了鏈接服務器。

我們將其更改爲適用於Oracle的Microsoft OLD DB Provider,問題已解決。希望這可以幫助。

相關問題