关于SQL SERVER使用OPENQUERY查询ORACLE数据库的问题

qq137051908 2012-08-10 04:34:15
SELECT TOP 1 STAMP_ID FROM OPENQUERY(ORACLE_ERP,'SELECT STAMP_ID FROM BPM.BPM_PPM_STAMP ORDER BY STAMP_ID DESC') WHERE STAMP_ID=791

查询出来的结果是没有问题的,但是使用下面的语句就会报错
SELECT TOP 1 STAMP_ID FROM OPENQUERY(ORACLE_ERP,'SELECT STAMP_ID FROM BPM.BPM_PPM_STAMP ORDER BY STAMP_ID DESC') WHERE STAMP_ID=790

报错信息为:
消息 9803,级别 16,状态 1,第 1 行
数据不适用于类型 "numeric"。
ORACLE中STAMP_ID字段类型为NUMBER(19)

望大神们解答一下
...全文
580 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zlmoypoyxx 2013-05-26
  • 打赏
  • 举报
回复
你的写法没有充分利用 openquery 函数的优越性。你的语句是把 BPM.BPM_PPM_STAMP 表的所有记录都从 ORACLE 数据库提取到 SQL SERVER 服务器上再由 SQLSERVER 选出所需的记录。我的写法是在 ORACLE 服务器上选出所需记录再交给 SQL SERVER 服务器。这样的速度要快的多,几乎与在 ORACLE 上执行差不多快。
zlmoypoyxx 2013-05-26
  • 打赏
  • 举报
回复
这么写应该能行: SELECT * FROM OPENQUERY(ORACLE_ERP,'SELECT TOP 1 STAMP_ID FROM BPM.BPM_PPM_STAMP WHERE STAMP_ID=791 ORDER BY STAMP_ID DESC')
qq137051908 2012-08-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
数据转换的问题, oracle的数据类型number(19) 无法默认转换成sql 里面的numeric。
建议lZ转换一下类型,比如转到varchar?
[/Quote]
那么 790报错了,791却没有报错,这是为什么呢?
转了下没有问题了,谢谢。
Mr_Nice 2012-08-10
  • 打赏
  • 举报
回复
数据转换的问题, oracle的数据类型number(19) 无法默认转换成sql 里面的numeric。
建议lZ转换一下类型,比如转到varchar?

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧