国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

ORACLE的外部調(diào)用的實(shí)現(xiàn)

2024-08-29 13:38:39
字體:
供稿:網(wǎng)友

  使用Oracle的外部調(diào)用大致分以下幾步:
  
  1、編寫共享庫(或動(dòng)態(tài)連接庫),也就是你想調(diào)用的過程或函數(shù)。
  2、設(shè)置listener.ora和tnsnames.ora,確保外部調(diào)用的服務(wù)可用。
  3、create library
  4、create function or PRocedure
  
  下面的例子是在solaris 7 + oracle 816環(huán)境下通過的,只是寫一個(gè)隨機(jī)函數(shù)。
  
  
  1、編寫共享庫:
  
  test.c:
  #include
  #include
  
  int ora_rand()
  {
   int rao;
   rao = rand();
   return 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)
   )
   )
  
  當(dāng)然文件都是本地的
  
  3、create library:
  
  create library 要有相應(yīng)的權(quán)限,我為了省事,就在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 return binary_integer as language c
   3 name "ora_rand"
   4 library ext_lib;
   5 /
  
  Function created.
  
  然后就可以調(diào)用test_rand生成隨機(jī)數(shù)了:
  
  SQL> select 1*test_rand from dual;
  
  1*TEST_RAND
  -----------
   16838
  
  SQL> /
  
  1*TEST_RAND
  -----------
   5758
  
  SQL> /
  
  1*TEST_RAND
  -----------
   10113
  
  這個(gè)函數(shù)生成的隨機(jī)數(shù)在0到32767之間。

  
  以上只是一個(gè)很簡單的例子,只要把握了方法,理論上就可以用PL/SQL做任何事了

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 牙克石市| 綦江县| 左贡县| 鄂伦春自治旗| 日喀则市| 新丰县| 天台县| 密山市| 乐平市| 泸州市| 开鲁县| 富裕县| 邹平县| 三明市| 名山县| 安西县| 额尔古纳市| 三原县| 崇仁县| 广东省| 四会市| 曲阳县| 阿瓦提县| 若尔盖县| 正蓝旗| 洮南市| 滦平县| 新河县| 安平县| 眉山市| 西林县| 太谷县| 广州市| 新源县| 罗田县| 寿宁县| 揭东县| 吐鲁番市| 蒙山县| 罗源县| 灵宝市|