Oracleのトリガーによって呼び出される関数を、cまたはc ++で作成したいと考えています。 PostgreSQLのようなもの: Cの監査トリガー 。
または、いずれにせよ、これはサポートされていますが、Pythonなどの他の言語ではサポートされていますか?
ありがとう!
Oracleデータベースは、Javaおよび外部C呼び出しをサポートします。これらは、Pythonなどの他の言語で記述されたプログラムを呼び出すラッパーとして使用できます。
Oracle Databaseは、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!
これについての詳細: