如何通过linkedserver对远程oracle进行数据操作

如何通过linkedserver对远程oracle进行数据操作

ID:34758617

大小:54.91 KB

页数:8页

时间:2019-03-10

如何通过linkedserver对远程oracle进行数据操作_第1页
如何通过linkedserver对远程oracle进行数据操作_第2页
如何通过linkedserver对远程oracle进行数据操作_第3页
如何通过linkedserver对远程oracle进行数据操作_第4页
如何通过linkedserver对远程oracle进行数据操作_第5页
资源描述:

《如何通过linkedserver对远程oracle进行数据操作》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、如何通过linkedserver对远程Oracle进行数据操作 1. OpenqueryOpenquery是使用linkedserver中非常推荐使用的函数。通常情况下,如果我们用四段式的名称访问远程的oracletable,比如:Select*fromlinkedserver.oracledb.user.tablewhereid=n由于SQLServer没有办法获得Oracle端的统计信息,即使在ID字段上有index,以上的语句还是没有办法使用oracle端的index,默认的行为就是把所有的数据传送给SQLServer然后在SQLServer

2、端做过滤.  如果我们使用OpenQuery进行insert、update和delete操作,我们可以手工的决定哪个部分的语句直接传递给oracle执行。具体用法举例为: DELETEfromOPENQUERY(oracle92,'SELECT*FROMTESTWHEREID=1')INSERTOPENQUERY(ORACLE92,'SELECT*FROMTEST')VALUES(2,'CC')UPDATEOPENQUERY(ORACLE92,'SELECT*FROMTESTWHEREID=1')SETNAME='CCC' 同时,Openquery

3、可以跳过元数据的类型校验,因此是linkedserver语句的访问性能提高。有时在相互兼容性不够好的两种数据库之间,比如SQLServer和DB2之间,直接用四段式的方式访问是没有办法通过元数据校验并且返回结果集的,但是当我们改用openquery函数的时候,就可以成功的访问远程数据了。 1.如何通过linkedserver调用远程oracle的存储过程。Linkedserver是不支持直接调用非SQLServer的远程数据库的带参数的存储过程的。下面列出了三种方法,这里只有方法2在32位及64位的SQLServer都可用: ***方法1*** 可

4、以使用msdaora调用一个没有参数的Oracle存储过程。使用oraOLEDB.oracle,会引发错误7357,这意味着在64位oraOLEDB.oracle接口上会执行失败。(64bit上没有msdaora)错误信息:Msg7357,Level16,State2,Line1Cannotprocesstheobject"{CALLSCOTT.USP_WCARROLL_PROC({resultset25,OUTPUT})}".TheOLEDBprovider"OraOLEDB.Oracle"forlinkedserver"ORACLE92"ind

5、icatesthateithertheobjecthasnocolumnsorthecurrentuserdoesnothavepermissionsonthatobject./*创建Oracle对象的SQLPlus代码*/createorreplaceprocedureSCOTT.USP_WCARROLL_PROC(OUTPUTOUTdbms_output.chararr)isbeginOUTPUT(1):='One';OUTPUT(2):='Two';OUTPUT(3):='Three';end;/ select*fromopenquery(O

6、RACLE92,'{CALLSCOTT.USP_WCARROLL_PROC({resultset25,OUTPUT})}'); ***方法2***向Oracle表中插入记录,且该操作触发一个会调用存储过程的触发器可以在Oracle中创建一个表,并在上面放置一个由insert操作触发的触发器;在触发器中,会调用Oracle存储过程。如果你的Oracle技术比我好,你的触发器应当能够得到被插入的记录数据并把它们传递到Oracle存储过程作为参数。为了返回数据,可以利用存储过程更新Oracle表中的记录,然后重新查询记录,以此从SQLServer中得到返

7、回参数。这种方法在msdaora和oraOLEDB.oracle上都适用。所以这个方法将适用于Oracle64位的OLEDB接口。 /*创建Oracle对象的SQLPlus代码*/createtableSCOTT.TBL_WCARROLL(idint,mydatevarchar2(100));/ createtableSCOTT.TBL_WCARROLL_CALLPROC(idint,param1int,param1varchar2(100));/ createorreplaceprocedureSCOTT.USP_WCARROLLasbegini

8、nsertintoSCOTT.TBL_WCARROLLvalues(99,'Success')end;/ createor

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。