CREATE OR REPLACE MLE MODULE factorial_mod LANGUAGE JAVASCRIPT AS
export function factorial(num) {
if(num < 0) {
return -1;
} else if (num == 0) {
return 1;
} else {
return(num * factorial(num-1));
}
}
/
このJavaScriptのコードをDDL中に記述する代わりに、Gistに作成したスニペットを使用します。
例えば以下のURLより、Gistのスニペットを取得できます。
https://gist.githubusercontent.com/ujnak/1808026f3728baedc908b5baf8ac4b99/raw/4dbf9898971f8b696eb83d86f33f2246ecb6d40d/factorial_mod.js
ホストgist.githubusercontent.comへRESTコールアウトができない場合は、以下のコードをSYSで実行して、コールアウトを許可します。
ホストgist.githubusercontent.comへRESTコールアウトができない場合は、以下のコードをSYSで実行して、コールアウトを許可します。
begin
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => 'gist.githubusercontent.com',
ace => xs$ace_type(
privilege_list => xs$name_list('connect','resolve'),
principal_name => 'APEX_220200',
principal_type => xs_acl.ptype_db));
commit;
end;
/
ネットワークACLの設定については、以下の記事で解説しています。
Autonomous DatabaseのAPEXでUTL_HTTPを使用する
以上の準備が済んだところで、JavaScriptのモジュールを作成します。以下のDDLを実行します。(23cからfrom dualが不要になりました。このコードではfrom dualを省いています。)
オブジェクト・ブラウザのMLEモジュール - JavaScriptから、作成したモジュールFACTORIAL_MODを確認します。
Gistを例に取りましたが、HTTPで呼び出すことができればリポジトリは選ばないでしょう。特殊な認証が必要な場合は、一旦データベースにCLOBとして保存した上でJavaScriptモジュールを作成する必要がありそうです。
どちらにしても、DDLからソースコードを除くことにより、CI/CDに載せることが容易になるはずです。
完