2010-12-07 96 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,问题已解决。希望这可以帮助。

相关问题