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に作成したスニペットを使用します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export function factorial(num) { | |
if(num < 0) { | |
return -1; | |
} else if (num == 0) { | |
return 1; | |
} else { | |
return(num * factorial(num-1)); | |
} | |
} |
例えば以下の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を省いています。)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
create or replace mle module factorial_mod | |
language javascript | |
version '1.0' | |
using clob | |
( | |
select | |
apex_web_service.make_rest_request( | |
p_url => 'https://gist.githubusercontent.com/ujnak/1808026f3728baedc908b5baf8ac4b99/raw/4dbf9898971f8b696eb83d86f33f2246ecb6d40d/factorial_mod.js' | |
,p_http_method => 'GET' | |
) | |
) | |
; |
オブジェクト・ブラウザのMLEモジュール - JavaScriptから、作成したモジュールFACTORIAL_MODを確認します。
Gistを例に取りましたが、HTTPで呼び出すことができればリポジトリは選ばないでしょう。特殊な認証が必要な場合は、一旦データベースにCLOBとして保存した上でJavaScriptモジュールを作成する必要がありそうです。
どちらにしても、DDLからソースコードを除くことにより、CI/CDに載せることが容易になるはずです。
完