专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » oracle调用函数:ORACLE的外部调用的实现 »正文

oracle调用函数:ORACLE的外部调用的实现

来源: 发布时间:星期二, 2008年12月23日 浏览:2次 评论:0
="t18">
  使用Oracle外部大致分以下几步:
  
  1、编写共享库(或动态连接库)也就是你想过程或
  2、设置listener.ora和tnsnames.ora确保外部服务可用
  3、create library
  4、create function or procedure
  
  下面例子是在solaris 7 + oracle 816环境下通过,只是写个随机
  
  
  1、编写共享库:
  
  test.c:
  #
  #
  
   ora_rand
  {
   rao;
   rao = rand;
   rao;
  }
  
  编译:
  
  $ gcc -c test.c
  $ ls
  test.c test.o
  $ ld -G test.o -o test.so
  $ ls
  test.c test.o test.so
  
  2、配置listener.ora和tnsnames.ora
  
  listener.ora:
  # Generated by Oracle configuration tools.
  
  LISTENER =
   (DESCRIPTION_LIST =
   (DESCRIPTION =
   (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
   (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.99)(PORT = 1521))
  
   )
   )
   )
  
  SID_LIST_LISTENER =
   (SID_LIST =
   (SID_DESC =
   (SID_NAME = PLSExtProc)
   (ORACLE_HOME = /home/oracle/prodUCt/816)
   (PROGRAM = extproc)
   )
   (SID_DESC =
   (ORACLE_HOME = /home/oracle/product/816)
   (SID_NAME = sid1)
   )
   )
  
  tnsnames.ora:
  # Generated by Oracle configuration tools.
  
  EXTPROC_CONNECTION_DATA =
   (DESCRIPTION =
   (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
   )
   (CONNECT_DATA =
   (SID = PLSExtProc)
   (PRESENTATION = RO)
   )
   )
  
  sid1 =
   (DESCRIPTION =
   (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.99)(PORT = 1521))
   )
   (CONNECT_DATA =
   (SERVICE_NAME = sid1)
   )
   )
  
  当然文件都是本地
  
  3、create library:
  
  create library 要有相应权限我为了省事就在system用户下建:
  
  SQL> CREATE OR REPLACE LIBRARY ext_lib IS '/home/oracle/local/test.so'
  ;
   2 /
  
  Library created.
  
  
  4、create function:
  
  SQL> create function test_rand
   2 binary_eger as language c
   3 name "ora_rand"
   4 library ext_lib;
   5 /
  
  Function created.
  
  然后就可以test_rand生成随机数了:
  
  SQL> select 1*test_rand from dual;
  
  1*TEST_RAND
  -----------
   16838
  
  SQL> /
  
  1*TEST_RAND
  -----------
   5758
  
  SQL> /
  
  1*TEST_RAND
  -----------
   10113
  
  这个生成随机数在0到32767的间

  
  以上只是个很简单例子只要把握了思路方法理论上就可以用PL/SQL做任何事了

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: