失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > oracle报数据类型不正确 SQL Server访问Oracle提示[消息 9803 数据不适用于类型 “numeric”]问题...

oracle报数据类型不正确 SQL Server访问Oracle提示[消息 9803 数据不适用于类型 “numeric”]问题...

时间:2023-08-17 08:12:41

相关推荐

oracle报数据类型不正确 SQL Server访问Oracle提示[消息 9803 数据不适用于类型 “numeric”]问题...

服务器A,安装的是SQL Server,Oracle 10g的客户端,版本10.2.0.1

服务器B,装的是Oracle 11g,版本11.2.0.1

现在是服务器A上建了链接服务器,去访问服务器B上面的Oracle库数据

假如使用微软的驱动Microsoft OLE DB Provider for Oracle(MSDAORA)建链接服务器,则性能不敢恭维(但语句是可以正常执行的),因为性能原因,使用Oracle的驱动Oracle Provider for OLE DB(OraOLEDB.Oracle)来建链接服务器,但随之问题来了

Oracle的T1表,只有一个字段F1,number(19,4)类型

SQL Server查询分析器中,无论使用下列哪种语法格式

select * from LINKDB..USER1.T1;

select * from openquery(LINKDB,'SELECT * FROM T1');

都会提示

消息 9803,级别 16,状态 1,第 1 行 数据不适用于类型 "numeric"。

网上查找解决办法,没找到适合此情况的有效解决方案(查询到此错误信息,但对应的解决方法不外乎做类型转换)

按错误提示的字面意思,开始以为F1字段值有最大值限制,通过反复测试,发现的规律(不知道算不算规律)并不是值的大小,测试结果如下:

5.0000 可以

9.0000 可以

10.0000 不可以

20.0000 不可以

50.0000 不可以

50.1000 可以

51.0000 可以

100.0000 不可以

110.0000 可以

100.0100 可以

500.0000 不可以

1000.0000 不可以

1200.0000 不可以

1201.0000 可以

规律貌似就是,>=10的数,只要只有一位非零的数,就不行,>=1000的数,只有一位或者前两位非零,也是不行的

怪哉!

查了一下SQL Server的版本

select @@version

Microsoft SQL Server - 9.00.1399.06 (Intel X86) Oct 14 00:33:37 Copyright (c) 1988- Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

没打pack

所以先打上sp4,之后仍然没解决

再考虑Oracle客户端版本问题,在服务器A上面装了Oracle 11g的客户端,问题解决!

如果觉得《oracle报数据类型不正确 SQL Server访问Oracle提示[消息 9803 数据不适用于类型 “numeric”]问题...》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。