9.14 MLE
MLEコマンドを使用して、JavaScriptライブラリをMLEモジュールとしてデータベースにロードします。
前提条件
このコマンドには次のものが必要です:
- Oracle Databaseリリース23ai。
-
create-moduleサブコマンドには
CREATE TABLE権限が必要です。別のスキーマにモジュールを作成する場合は、CREATE ANY TABLE権限が必要です。 - 『Oracle Database JavaScript開発者ガイド』に記載されているシステム権限。
9.14.1 モジュールの作成
MLEモジュールを作成します。
構文
mle create-module {OPTIONS}
オプション
| オプション | 説明 |
|---|---|
| 必須 | |
-filename <filename> |
有効なJavaScriptファイルへのパスを指定します。 |
-module-name <module> |
現在のスキーマ内に作成するモジュールの名前を指定します。 |
| オプション | |
-bundler <bundler> {rollup} |
JavaScriptファイルをその依存性とバンドル可能な、サポートされているプログラムの名前を指定します。「外部依存性があるJavaScript」を参照してください。 |
-bundler‑config <bundler‑config> {file} |
バンドル・プログラム用の構成ファイルの名前を指定します。 |
-if-not-exists |
モジュールを作成します(それが存在しない場合のみ)。 |
-language <language> |
サポートされているプログラミング言語の名前を指定します。デフォルト値はJavaScriptです。 |
-metadata <metadata> |
そのモジュールを説明する有効なJSONテキストを指定します。このオプションは-metafileと相互に排他的です。 |
-metafile <metafile> |
そのモジュールを説明する有効なJSONファイルへのパスを指定します。このオプションは-metadataと相互に排他的です。 |
-sbom <sbom> {syft} |
ソフトウェア部品表を作成可能な、サポートされているプログラムの名前を指定します。 |
-replace |
そのモジュールが存在する場合は置き換え、存在しない場合は作成します。 |
-schema <schema> |
そのモジュールを所有する代替スキーマの名前を指定します。 |
–verbose |
コマンドの進行に合わせてさらに診断情報を出力します。 |
–version <version> |
プログラミング言語のバージョンを指定します。 |
外部依存性があるJavaScript
「モジュールの作成」サブコマンドでは、他のJavaScriptモジュールを参照するJavaScriptファイルをロードできます。これを実現するために、MLEコマンドでは、指定したJavaScriptファイルがその依存性すべてとバンドルされ、外部のrollupコマンドが使用されます。
-
rollupとsyftのインストール
外部依存性をバンドルするには、rollupをインストールします。SBOM (ソフトウェア部品表)の場合は、syftをインストールします。どちらの場合も、brew installを使用できます。
-
rollup実行の構成
バンドリングの目的となる用途は、外部依存性がある単一のJavaScriptファイルをバンドルすることです。たとえば、バンドリングで1つ以上の外部依存性を除外する必要がある場合は、-bundler‑configオプションで指定した構成ファイル内で、そのような除外を指定します。すべてのバンドリングに構成が必要なわけではありません。どのような場合でも(構成ファイル内で入力ファイル名が指定されている場合でも)、バンドルする単一のJavaScriptファイルを必ず‑filenameオプションで指定します。
-
依存性の変更
a.jsからMLEモジュールを作成し、c.jsを変更した後に、b.jsから別のMLEモジュールを作成した場合は、2つのMLEモジュールと、変更された依存性c.jsがあります。これを回避するには、3つのMLEモジュールを作成しバンドリングを回避するように、コードを再編成します。
-
デバッグ
ホスト・コマンド(-bundlerオプションを使用)によって、バンドルされているJavaScriptファイルが作成された場合、結果となるJavaScriptファイルは、ファイル・システムに存在する内容を正確に表現したものではありません。そのため、MLEモジュールの実行にデバッガをアタッチした場合に、表示している外部JavaScriptファイルと行番号がわかりません。
9.14.2 モジュールの変更
既存のMLEモジュールを変更します。
構文
mle alter-module {OPTIONS}
オプション
| オプション | 説明 |
|---|---|
| 必須 | |
-module-name <module> |
現在のスキーマにある変更するモジュールの名前。 |
-metadata <metadata> |
そのモジュールを説明する有効なJSONテキスト。このオプションは-metafileと相互に排他的です。 |
-metafile <metafile> |
そのモジュールを説明する有効なJSONファイルへのパス。このオプションは-metadataと相互に排他的です。 |
| オプション | |
-if-exists |
そのモジュールが存在する場合のみ、そのモジュールを変更します。 |
–verbose |
コマンドの進行に合わせてさらに診断情報を出力します。 |
-schema <schema> |
そのモジュールを所有する代替スキーマの名前。 |
例
- メタデータを更新しモジュール名を指定することで、既存のMLEモジュールを変更します。
SQL> mle alter-module -metadata '{"name":"getOrderTotal", "version":"1.1"}' -module-name abc - MLEモジュールのメタデータを表示します。
SQL> select metadata from user_mle_modules where module_name = 'ABC'