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
相关文章
读者评论
发表评论 |