oracle如何实现外部调用功能

oracle如何实现外部调用功能

ID:34725032

大小:63.18 KB

页数:3页

时间:2019-03-10

oracle如何实现外部调用功能_第1页
oracle如何实现外部调用功能_第2页
oracle如何实现外部调用功能_第3页
资源描述:

《oracle如何实现外部调用功能》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Oracle如何实现外部调用功能                        Oralce的外部调用功能很复杂,在这里,我们只需要在存储过程中要调用一个c函数。其大致的流程如下,我们以test.c文件为例,这个c文件的内容大致如下:#includeintlp(char*text){………}即包含一个lp()函数。我们的目标是在存储过程中调用lp()函数。先把.c文件编译成.o文件gcc–ctest.c把.o文件编译成共享库文件ld–G–otest.sotest.o通知oracle有关外部

2、的信息    这里有一个问题,在oracle9i以前的版本中,共享库文件在操作系统中的位置是没有关系中的,可以把它放在任意一个目录下,例如可以用下面的语句来创建一个testlib:createlibrarytestlibas‘/tmp/test.so’但在9i里,可能考虑到共享库的稳定和安全性问题,这样使用话会报错如下:ORA-28595:Extprocagent:InvalidDLLPath在9i下必须把.so文件放到$ORACLE_HOME/lib目录下,并且设置环境变量EXTPROC_DLLS=$OR

3、ACLE_HOME/lib。然后创建testlib:createlibrarytestlibas‘$ORACLE_HOME/test.so’执行这一语句需要CREATELIBRARY系统权限。编写PL/SQL包装程序。使用刚刚创建的ORACLE库,需要创建如下的PL/SQL函数:createorreplaceFUNCTIONlp(lstrinvarchar2)returnpls_integerAS  LANGUAGEC  LIBRARYtestlib  NAME"lp"  PARAMETERS(lstrST

4、RING,returnINT);/从PL/SQL调用外部过程。现在,我们可以在存储过程中调用lp()函数了,可以实现该函数原来的功能。示例如下:createorreplaceprocedureadd_test(lidinvarchar2  )asresultPLS_INTEGER;beginresult:=lp('helloworld');endadd_test;/    正常情况下,你就可以通过上述的过程来在oracle存储过程中来调用一个c函数了。但是,Oracle实现‘外部调用功能’(external

5、procedure),数据库需要安装intermedia,判断intermedia是否安装,需要通过tnsping来测试一下是否配置正确。命令运行如下    tnspingextproc_connection_data或者    tnspingextproc_connection_data.world    如果配置正确,会显示:    Attemptingtocontact(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC))OK(0毫秒)    如果显示服务不存在,需要重新设置lis

6、terner.ora和tnsnames.ora    增加后的内容如下:    listerner.ora:    DZHD=      (DESCRIPTION_LIST=        (DESCRIPTION=          (ADDRESS=(PROTOCOL=TCP)(HOST=JSDZHD)(PORT=1521))        )        (DESCRIPTION=          (ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC))        )    

7、  )        SID_LIST_DZHD=      (SID_LIST=        (SID_DESC=        (GLOBAL_DBNAME=dzhd)        (ORACLE_HOME=/oracle/app/oracle/product/9.2.0.4)        (SID_NAME=dzhd)        )        (SID_DESC=        (PROGRAM=extproc)        (SID_NAME=PLSExtProc)        (

8、ORACLE_HOME=/oracle/app/oracle/product/9.2.0.4)        )      )                tnsnames.ora        DZHD=          (DESCRIPTION_LIST=            (DESCRIPTION=          (ADDRESS=(PROTOCOL=TCP)(HOST=JSDZHD)(PORT

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

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

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