Postgresql

Oracle 11g:C/C++ 中的函式或過程

  • February 3, 2018

我想創建一個由 oracle 上的觸發器呼叫的函式,但在 c 或 c++ 中。類似於 PostgreSQL 中的內容:C 中的審計觸發器

或者,在任何情況下,是否支持這一點,但在 Python 等其他語言中?

謝謝!

Oracle 數據庫支持 Java 和外部 C 呼叫。它們可以用作包裝器來呼叫用其他語言(如 Python)編寫的程序。

發布外部程序

Oracle 數據庫只能使用通過呼叫規範發布的外部過程,該規範將 Java 類方法或 C 外部過程的名稱、參數類型和返回類型映射到其對應的 SQL。

創建一個範常式序:

$ cat /home/oracle/1.c
char* myfunc()
{
  return "Hello World!";
}

$ gcc -shared -o /home/oracle/1.so -fPIC /home/oracle/1.c

在數據庫中,創建一個庫和一個使用它的函式:

create or replace library lib_myfunc is '/home/oracle/1.so';
/

create or replace function myfunc
return varchar2 as external
name "myfunc"
library lib_myfunc
language c;
/

啟用此庫的使用$ORACLE_HOME/hs/admin/extproc.ora

SET EXTPROC_DLLS=/home/oracle/1.so

然後最終將其用作:

SQL> select myfunc from dual;

MYFUNC
------------
Hello World!

更多關於這個:

使用多種程式語言開發應用程序

引用自:https://dba.stackexchange.com/questions/196962