120 DBMS_MLE

DBMS_MLEパッケージを使用すると、ユーザーはOracle Database内でJavaScriptコードを実行し、PL/SQLとJavaScriptの間でシームレスにデータを交換できます。JavaScriptコード自体は、組込みJavaScriptモジュールを介してPL/SQLおよびSQLを実行できます。JavaScriptデータ型は、Oracle Databaseデータ型に自動的にマップされ、その逆も同様です。

DBMS_MLEパッケージを使用すると、開発者はJavaScriptでデータ処理ロジックを記述できます。

この章のトピックは、次のとおりです:

120.1 DBMS_MLEの概要

MLE実行のランタイム状態は、ユーザーが明示的に作成および破棄できる実行コンテキストにカプセル化されます。ユーザーは、PL/SQLからMLEに値をエクスポートし、MLEからPL/SQLに値をインポートすることもできます。

次の例では、MLE実行の一般的なワークフローを取得しています。

set serveroutput on;
declare
  ctx dbms_mle.context_handle_t;
  source clob;
  greeting varchar2(100);
begin
  ctx := dbms_mle.create_context(); -- Create execution context for MLE execution
  dbms_mle.export_to_mle(ctx, 'person', 'World'); -- Export value from PL/SQL
  source := q'~
    var bindings = require("mle-js-bindings");
    var person = bindings.importValue("person"); // Import value previously exported from PL/SQL
    var greeting = "Hello, " + person + "!";
    bindings.exportValue("greeting", greeting); // Export value to PL/SQL
  ~';
  dbms_mle.eval(ctx, 'JAVASCRIPT', source); -- Evaluate the source code snippet in the execution context
  dbms_mle.import_from_mle(ctx, 'greeting', greeting); -- Import value previously exported from MLE
  dbms_output.put_line('Greetings from MLE: ' || greeting);
  dbms_mle.drop_context(ctx); -- Drop the execution context once no longer required
end;
/

このコード・ブロックを実行すると、次の出力が生成されます。

Greetings from MLE: Hello, World!

120.2 DBMS_MLEのセキュリティ・モデル

MLE機能へのアクセスは、データベース権限によって保護されます。ユーザーは、MLE実行に関連するファンクションおよびプロシージャをコールする際には、EXECUTE DYNAMIC MLE権限を持っている必要があります。これに加えて、ユーザーがJavaScriptコードを実行するには、EXECUTE ON JAVASCRIPT権限も持っている必要があります。いずれかのDBMS_MLEサブプログラムをコールするユーザーに適切な権限がない場合は、ORA-01031エラーが発生します。各DBMS_MLEサブプログラムのコールに必要な権限については、「DBMS_MLEサブプログラムの要約」を参照してください。

120.3 DBMS_MLEサブプログラムの要約

この表は、DBMS_MLEサブプログラムを示し、簡単に説明しています。

表120-1 DBMS_MLEパッケージのサブプログラム

サブプログラム 説明

CREATE_CONTEXTファンクション

JavaScriptでスニペットを実行するためのMLEコンテキストを作成します。

DISABLE_CTX_STDERRプロシージャ

このプロシージャは、指定されたMLEコンテキストのstderrストリームを無効にして、stderrへの今後の書込みが破棄されるようにします。

DISABLE_CTX_STDOUTプロシージャ

このプロシージャは、指定されたMLEコンテキストのstdoutストリームを無効にして、stdoutへの今後の書込みが破棄されるようにします。
DISABLE_DEBUGGINGプロシージャ このプロシージャは、現行のセッションについて現在有効になっているデバッグポイントを無効にします。
DISABLE_ICS_STDERRプロシージャ このプロシージャは、インラインされたMLEコール仕様コンテキストのstderrストリームを無効にして、現行のセッションのコール・ユーザーについてstderrへの今後の書込みが破棄されるようにします。
DISABLE_ICS_STDOUTプロシージャ このプロシージャは、インラインされたコール仕様コンテキストのstdoutストリームを無効にして、現行のセッションのコール・ユーザーについてstdoutへの今後の書込みが破棄されるようにします。

DISABLE_STDERRプロシージャ

このプロシージャは、MLEコンテキストのstderrストリームを無効にして、stderrへの今後の書込みが破棄されるようにします。

DISABLE_STDOUTプロシージャ

このプロシージャは、MLEコンテキストのstdoutストリームを無効にして、stdoutへの今後の書込みが破棄されるようにします。

DROP_CONTEXTプロシージャ

このプロシージャは、CREATE_CONTEXTプロシージャを使用して以前に作成されたMLEコンテキストを削除するために使用します。コンテキストが削除されると、コンテキスト・ハンドルは無効になり、使用できなくなります。
ENABLE_DEBUGGINGプロシージャ このプロシージャは、現行のセッションについて一連のデバッグポイントを有効にします。

EVALプロシージャ

このプロシージャは、コンテキスト・ハンドルで識別されるコンテキスト内で指定のJavaScriptコードを実行します。

EXPORT_TO_MLEプロシージャ

このプロシージャを使用すると、MLEコンテキストの名前付きプロパティに特定の値を適切に変換したうえで割り当てることができます。プロパティが存在しない場合には作成されます。

GET_AVAILABLE_LANGUAGESファンクション

このファンクションは、使用可能なMLE言語のセットを戻します。
GET_CTX_ERROR_STACKファンクション このファンクションは、指定された実行コンテキストで最新のアプリケーション・エラーのJavaScriptスタック・トレースを取得します。
GET_ERROR_STACKファンクション このファンクションは、指定されたモジュール(およびオプションの環境)のコールで最新のアプリケーション・エラーのJavaScriptスタック・トレースを取得します。

IMPORT_FROM_MLEプロシージャ

このプロシージャは、MLEコンテキストから名前付きプロパティの値を取得して、要求されたPL/SQLタイプに変換します。
PARSE_DEBUG_OUTPUTファンクション Javaヒープ・ダンプ形式のMLEデバッグ出力が含まれているBLOBが指定されると、このファンクションはデバッグ出力のテキスト表現を戻します。

SET_CTX_STDERRプロシージャ

このプロシージャは、MLEコンテキストのstderrストリームを指定のCLOBにリダイレクトします。

SET_CTX_STDERR_TO_DBMS_OUTPUTプロシージャ

このプロシージャは、MLEコンテキストのstderrストリームをDBMS_OUTPUTにリダイレクトします。

SET_CTX_STDOUTプロシージャ

このプロシージャは、MLEコンテキストのstdoutストリームを指定のCLOBにリダイレクトします。

SET_CTX_STDOUT_TO_DBMS_OUTPUTプロシージャ

このプロシージャは、MLEコンテキストのstdoutストリームをDBMS_OUTPUTにリダイレクトします。
SET_ICS_STDERRプロシージャ このプロシージャは、現行のセッションのコール・ユーザーについて、インラインされたMLEコール仕様コンテキストのstderrストリームを指定のCLOBにリダイレクトします。
SET_ICS_STDERR_TO_DBMS_OUTPUTプロシージャ このプロシージャは、現行のセッションのコール・ユーザーについて、インラインされたMLEコール仕様コンテキストのstderrストリームをDBMS_OUTPUTにリダイレクトします。
SET_ICS_STDOUTプロシージャ このプロシージャは、現行のセッションのインラインされたMLEコール仕様コンテキストのstdoutストリームを指定のCLOBにリダイレクトします。
SET_ICS_STDOUT_TO_DBMS_OUTPUTプロシージャ このプロシージャは、現行のセッションのコール・ユーザーについて、インラインされたコール仕様コンテキストのstdoutストリームをDBMS_OUTPUTにリダイレクトします。

SET_STDERRプロシージャ

このプロシージャは、MLEコンテキストのstderrストリームを指定のCLOBにリダイレクトします。

SET_STDERR_TO_DBMS_OUTPUTプロシージャ

このプロシージャは、MLEコンテキストのstderrストリームをDBMS_OUTPUTにリダイレクトします。

SET_STDOUTプロシージャ

このプロシージャは、MLEコンテキストのstdoutストリームを指定のCLOBにリダイレクトします。

SET_STDOUT_TO_DBMS_OUTPUTプロシージャ

このプロシージャは、MLEコンテキストのstdoutストリームをDBMS_OUTPUTにリダイレクトします。

120.3.1 CREATE_CONTEXTファンクション

JavaScriptでスニペットを実行するためのMLEコンテキストを作成します。このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.CREATE_CONTEXT
   RETURN CONTEXT_HANDLE_T;

DBMS_MLE.CREATE_CONTEXT(
   environment      IN      VARCHAR2)
RETURN CONTEXT_HANDLE_T;

パラメータ

表120-2 CREATE_CONTEXTファンクションのパラメータ

パラメータ 説明
environment コンテキストを構成するMLE環境のスキーマ名(大/小文字区別)。オプション。

戻り値

このファンクションは、EXPORT_TO_MLEEVALなどの後続の操作で使用するために、セッション内のコンテキストを一意に識別するハンドルを戻します。

使用上のノート

コンテキストの存続期間は、そのコンテキストが作成されたセッションに制限されます。クライアント・セッションが終了すると、そのすべてのコンテキストが削除されます。セッション状態が(たとえば、DBMS_SESSION.RESET_PACKAGEをコールすることによって)リセットされると、セッションで作成されたMLEコンテキストもすべて削除されます。JavaScriptコードは、コンテキストの作成時に有効なユーザー、ロールおよびスキーマを使用してコンテキスト内で評価されます。

このファンクションでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合。
  • ORA-04105: 環境が存在しない場合。

参照:

JavaScriptコードを実行するために必要な権限の詳細は、『Oracle Database JavaScript開発者ガイド』を参照してください

120.3.2 DISABLE_CTX_STDERRプロシージャ

このプロシージャは、指定されたMLEコンテキストのstderrストリームを無効にして、stderrへの今後の書込みが破棄されるようにします。このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.DISABLE_CTX_STDERR(
      context_handle            IN            context_handle_t);

パラメータ

表120-3 DISABLE_CTX_STDERRプロシージャのパラメータ

パラメータ 説明
context_handle 現行のセッションのMLEコンテキストへのハンドル。

使用上のノート

これまでバッファに入れられた出力は、既存のシンクにフラッシュされます。

このプロシージャでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合

120.3.3 DISABLE_CTX_STDOUTプロシージャ

このプロシージャは、指定されたMLEコンテキストのstdoutストリームを無効にして、stdoutへの今後の書込みが破棄されるようにします。このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.DISABLE_CTX_STDOUT(
      context_handle            IN            context_handle_t);

パラメータ

表120-4 DISABLE_CTX_STDOUTプロシージャのパラメータ

パラメータ 説明
context_handle 現行のセッションのMLEコンテキストへのハンドル。

使用上のノート

これまでバッファに入れられた出力は、既存のシンクにフラッシュされます。

このプロシージャでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合

120.3.4 DISABLE_DEBUGGINGプロシージャ

このプロシージャは、現行のセッションについて現在有効になっているデバッグポイントを無効にします。実行後のデバッグでは、プログラムの実行後に分析に使用されるランタイム状態を収集できます。実行後のデバッグは、モジュールでデプロイされたMLEコードにのみ適用でき、動的実行を使用してデプロイされたコードには適用できません。

構文

DBMS_MLE.DISABLE_DEBUGGING();

使用上のノート

現在有効になっているデバッグポイントがない場合、このプロシージャは効果がありません。DBMS_MLE.ENABLE_DEBUGGINGへの後続のコールでデバッグを再度有効にできます。

参照:

MLEを使用した実行後のデバッグの詳細は、『Oracle Database JavaScript開発者ガイド』を参照してください

120.3.5 DISABLE_ICS_STDERRプロシージャ

このプロシージャは、インラインされたMLEコール仕様コンテキストのstderrストリームを無効にして、現行のセッションのコール・ユーザーについてstderrへの今後の書込みが破棄されるようにします。このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.DISABLE_ICS_STDERR(
      name      IN      VARCHAR2);

パラメータ

表120-5 DISABLE_ICS_STDERRプロシージャのパラメータ

パラメータ 説明
name インラインされたMLEコール仕様の名前。

使用上のノート

これまでバッファに入れられた出力は、既存のシンクにフラッシュされます。

このプロシージャでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合。
  • ORA-04043: コール仕様が存在しない場合。

120.3.6 DISABLE_ICS_STDOUTプロシージャ

このプロシージャは、インラインされたコール仕様コンテキストのstdoutストリームを無効にして、現行のセッションのコール・ユーザーについてstdoutへの今後の書込みが破棄されるようにします。このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.DISABLE_ICS_STDOUT(
      name      IN      VARCHAR2);

パラメータ

表120-6 DISABLE_ICS_STDOUTプロシージャのパラメータ

パラメータ 説明
name インラインされたMLEコール仕様の名前。

使用上のノート

これまでバッファに入れられた出力は、既存のシンクにフラッシュされます。

このプロシージャでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合。
  • ORA-04043: コール仕様が存在しない場合。

120.3.7 DISABLE_STDERRプロシージャ

このプロシージャは、MLEコンテキストのstderrストリームを無効にして、stderrへの今後の書込みが破棄されるようにします。このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.DISABLE_STDERR();

DBMS_MLE.DISABLE_STDERR (
      module_name      IN      VARCHAR2);

DBMS_MLE.DISABLE_STDERR (
      module_name      IN      VARCHAR2,
      env_name         IN      VARCHAR2);

パラメータ

表120-7 DISABLE_STDERRファンクションのパラメータ

パラメータ 説明
module_name MLEモジュールの名前。
env_name MLE環境の名前。

使用上のノート

パラメータを指定せずにコールされると、このプロシージャは、既存のコンテキストおよび将来作成されるコンテキストすべてに適用されます。それ以外の場合は、指定したモジュール(またはモジュールと環境の組合せ)に関連付けられたコンテキストのみが影響を受けます。

環境を指定しない場合は、指定したモジュールと組込みの環境によって定義されるコンテキストが使用されます。

これまでバッファに入れられた出力は、既存のシンクにフラッシュされます。

このプロシージャでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合
  • ORA-04103: モジュールが存在しない場合
  • ORA-04105: 環境が存在しない場合

120.3.8 DISABLE_STDOUTプロシージャ

このプロシージャは、MLEコンテキストのstdoutストリームを無効にして、stdoutへの今後の書込みが破棄されるようにします。このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.DISABLE_STDOUT();

DBMS_MLE.DISABLE_STDOUT(
      module_name      IN      VARCHAR2);

DBMS_MLE.DISABLE_STDOUT(
      module_name      IN      VARCHAR2,
      env_name         IN      VARCHAR2);

パラメータ

表120-8 DISABLE_STDOUTファンクションのパラメータ

パラメータ 説明
module_name MLEモジュールの名前。
env_name MLE環境の名前。

使用上のノート

パラメータを指定せずにコールされると、このプロシージャは、既存のコンテキストおよび将来作成されるコンテキストすべてに適用されます。それ以外の場合は、指定したモジュール(またはモジュールと環境の組合せ)に関連付けられたコンテキストのみが影響を受けます。

環境を指定しない場合は、指定したモジュールと組込みの環境によって定義されるコンテキストが使用されます。

これまでバッファに入れられた出力は、既存のシンクにフラッシュされます。

このプロシージャでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合
  • ORA-04103: モジュールが存在しない場合
  • ORA-04105: 環境が存在しない場合

120.3.9 DROP_CONTEXTプロシージャ

このプロシージャは、CREATE_CONTEXTファンクションを使用して以前に作成されたMLEコンテキストを削除するために使用します。コンテキストが削除されると、コンテキスト・ハンドルは無効になり、使用できなくなります。このプロシージャを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.DROP_CONTEXT(
   context_handle   IN      context_handle_t);

パラメータ

表120-9 DROP_CONTEXTプロシージャのパラメータ

パラメータ 説明
context_handle 現行のセッションのMLEコンテキストへのハンドル。

使用上のノート

コール元に十分な権限がない場合には、プロシージャでORA-01031エラーが発生する可能性があります。

120.3.10 ENABLE_DEBUGGINGプロシージャ

このプロシージャは、現行のセッションについて一連のデバッグポイントを有効にします。実行後のデバッグでは、プログラムの実行後に分析に使用されるランタイム状態を収集できます。実行後のデバッグは、モジュールでデプロイされたMLEコードにのみ適用でき、動的実行を使用してデプロイされたコードには適用できません。

構文

DBMS_MLE.ENABLE_DEBUGGING(
   debugspec         IN         JSON,
   sink              OUT        NOCOPY BLOB);

パラメータ

表120-10 ENABLE_DEBUGGINGプロシージャのパラメータ

パラメータ 説明
debugspec 収集されるデバッグ情報を識別するJSONドキュメントとしてのデバッグ仕様。
sink デバッグ出力を記録するシンク。

使用上のノート

同じセッションでこのプロシージャを複数回コールすると、既存のデバッグポイントのセットが置き換えられます。

セッションが終了すると、有効になっているすべてのデバッグポイントが自動的に無効になります。

このプロシージャでは、次のエラーが発生する場合があります。
  • ORA-04103: モジュールが存在しない場合。
  • ORA-04162: MLE組込みのモジュールのデバッグが試行された場合。
  • ORA-04164: コール元に、モジュールに対するCOLLECT DEBUG INFO権限がない場合。
  • ORA-04165: 指定したデバッグ仕様が無効な場合。

参照:

MLEを使用した実行後のデバッグの詳細は、『Oracle Database JavaScript開発者ガイド』を参照してください

120.3.11 EVALプロシージャ

このプロシージャは、コンテキスト・ハンドルで識別されるコンテキスト内で指定のJavaScriptコードを実行します。

評価されたコードは、コンテキストで以前に評価されたコードによって定義された変数やEXPORT_TO_MLE()を介してエクスポートされた値など、以前にコンテキストの状態に加えたすべての変更にアクセスできます。また、評価されたコードは、MLE SQLドライバなどのMLE組込みのモジュールもインポートできます。

このプロシージャを実行するには、EXECUTE DYNAMIC MLE権限が必要です。また、EXECUTE ON JAVASCRIPT権限も必要です。

構文

DBMS_MLE.EVAL(
   context_handle   IN         context_handle_t,
   language_id      IN         language_t,
   source           IN         CLOB,
   result           IN OUT     NOCOPY CLOB CHARACTER SET ANY_CS,
   options          IN         VARCHAR2         DEFAULT NULL,
   source_name      IN         VARCHAR2         DEFAULT NULL);

DBMS_MLE.EVAL(
   context_handle   IN         context_handle_t,
   language_id      IN         language_t,
   source           IN         VARCHAR2,
   result           IN OUT     NOCOPY CLOB CHARACTER SET ANY_CS,
   options          IN         VARCHAR2         DEFAULT NULL,
   source_name      IN         VARCHAR2         DEFAULT NULL);

パラメータ

表120-11 EVALプロシージャのパラメータ

パラメータ 説明
context_handle MLEコンテキストへのハンドル。
language_id 指定されたソース・コードの言語。Oracle 23cでは、値'JAVASCRIPT'を指定する必要があります。
source 実行するソース・コード。
result ソース・コードの評価結果が付加されるバッファ。オプション。
options 将来の使用のために予約されています。オプション。
source_name スタック・トレース内でスニペットを識別するために使用される、指定したソース・コードの名前。オプション。

使用上のノート

オプションのsource_nameパラメータを指定する場合は、optionsパラメータをNULLまたは""として定義する必要があります。

このプロシージャでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合。
  • ORA-04108: 現在のコンテナ、現在のユーザーまたは現在有効になっているロールが、コンテキストの作成時に有効になっているものと異なる場合。
  • ORA-04153: コンテキスト・ハンドルが無効な場合。
  • ORA-04161: 評価されるソース・コードが例外をスローする場合。

120.3.12 EXPORT_TO_MLEプロシージャ

このプロシージャを使用すると、MLEコンテキストの名前付きプロパティに特定の値を適切に変換したうえで割り当てることができます。プロパティが存在しない場合には作成されます。このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.EXPORT_TO_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   property_value   IN      BINARY_INTEGER);

DBMS_MLE.EXPORT_TO_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   property_value   IN      BINARY_DOUBLE);

DBMS_MLE.EXPORT_TO_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   property_value   IN      BINARY_FLOAT);

DBMS_MLE.EXPORT_TO_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   property_value   IN      BLOB);

DBMS_MLE.EXPORT_TO_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   property_value   IN      BOOLEAN);

DBMS_MLE.EXPORT_TO_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   property_value   IN      CLOB CHARACTER SET ANY_CS);

DBMS_MLE.EXPORT_TO_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   property_value   IN      DATE);

DBMS_MLE.EXPORT_TO_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   property_value   IN      DSINTERVAL_UNCONSTRAINED);

DBMS_MLE.EXPORT_TO_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   property_value   IN      JSON);

DBMS_MLE.EXPORT_TO_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   property_value   IN      NUMBER);

DBMS_MLE.EXPORT_TO_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   property_value   IN      TIMESTAMP_TZ_UNCONSTRAINED);

DBMS_MLE.EXPORT_TO_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   property_value   IN      TIMESTAMP_UNCONSTRAINED);

DBMS_MLE.EXPORT_UROWID (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   property_value   IN      UROWID);

DBMS_MLE.EXPORT_TO_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   property_value   IN      VARCHAR2 CHARACTER SET ANY_CS);

DBMS_MLE.EXPORT_TO_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   property_value   IN      YMINTERVAL_UNCONSTRAINED);

DBMS_MLE.EXPORT_CHAR (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   property_value   IN      CHAR CHARACTER SET ANY_CS);

DBMS_MLE.EXPORT_RAW (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   property_value   IN      RAW);

パラメータ

表120-12 EXPORT_TO_MLEプロシージャのパラメータ

パラメータ 説明
context_handle 現行のセッションのMLEコンテキストへのハンドル。
property_name 設定する変数の名前。property_name値がNULLまたは空の文字列の場合は、ORA-04157エラーがスローされます。
property_value 変数に設定する値。

使用上のノート

このプロシージャでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合。
  • ORA-04157: 渡されたproperty_nameの値がNULLまたは空の文字列の場合。
  • ORA-04108: 現在のコンテナ、現在のユーザーまたは現在有効になっているロールが、コンテキストの作成時に有効になっているものと異なる場合。
  • ORA-04153: コンテキスト・ハンドルが無効な場合。

120.3.13 GET_AVAILABLE_LANGUAGESファンクション

このファンクションは、使用可能なMLE言語のセットを戻します。

構文

DBMS_MLE.GET_AVAILABLE_LANGUAGES()
  RETURN languages_t;

戻り値

DBMS_MLE.EVAL()の引数として使用できる、言語識別子の表として使用可能なMLE言語のセット。

120.3.14 GET_CTX_ERROR_STACKファンクション

このファンクションは、指定された実行コンテキストで最新のアプリケーション・エラーのJavaScriptスタック・トレースを取得します。このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.GET_CTX_ERROR_STACK(
   context_handle            IN            context_handle_t)
RETURN error_frames_t;

パラメータ

表120-13 GET_CTX_ERROR_STACKファンクションのパラメータ

パラメータ 説明
context_handle 現行のセッションのMLEコンテキストへのハンドル。

戻り値

エラー・スタック・フレームのコレクションで、各タイプはerror_frame_tです。レポートするエラー・スタックがない場合、空のコレクションが戻されます。

使用上のノート

このファンクションでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合
  • ORA-04153: コンテキスト・ハンドルが無効な場合。

120.3.15 GET_ERROR_STACKファンクション

このファンクションは、指定されたモジュール(およびオプションの環境)のコールで最新のアプリケーション・エラーのJavaScriptスタック・トレースを取得します。このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.GET_ERROR_STACK(
   module_name            IN            VARCHAR2,
   env_name               IN            VARCHAR2 DEFAULT '')
RETURN error_frames_t;

パラメータ

表120-14 GET_ERROR_STACKファンクションのパラメータ

パラメータ 説明
module_name MLEモジュールの名前。
env_name MLE環境の名前。オプション。

戻り値

エラー・スタック・フレームのコレクションで、各タイプはerror_frame_tです。レポートするエラー・スタックがない場合、空のコレクションが戻されます。

使用上のノート

このファンクションでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合
  • ORA-04170: モジュール名または環境名が無効な場合

120.3.16 IMPORT_FROM_MLEプロシージャ

このプロシージャは、MLEコンテキストから名前付きプロパティの値を取得して、要求されたPL/SQLタイプに変換します。このプロシージャを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.IMPORT_FROM_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   target           OUT     NOCOPY BINARY_INTEGER);

DBMS_MLE.IMPORT_FROM_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   target           OUT     NOCOPY BINARY_DOUBLE);

DBMS_MLE.IMPORT_FROM_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   target           OUT     NOCOPY BINARY_FLOAT);

DBMS_MLE.IMPORT_FROM_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   target           OUT     NOCOPY BLOB);

DBMS_MLE.IMPORT_FROM_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   target           OUT     NOCOPY BOOLEAN);

DBMS_MLE.IMPORT_FROM_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   target           OUT     NOCOPY CLOB CHARACTER SET ANY_CS);

DBMS_MLE.IMPORT_FROM_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   target           OUT     NOCOPY DATE);

DBMS_MLE.IMPORT_FROM_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   target           OUT     NOCOPY DSINTERVAL_UNCONSTRAINED);

DBMS_MLE.IMPORT_FROM_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   target           OUT     JSON);

DBMS_MLE.IMPORT_FROM_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   target           OUT     NOCOPY NUMBER);

DBMS_MLE.IMPORT_FROM_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   target           OUT     NOCOPY TIMESTAMP_TZ_UNCONSTRAINED);

DBMS_MLE.IMPORT_FROM_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   target           OUT     NOCOPY TIMESTAMP_UNCONSTRAINED);

DBMS_MLE.IMPORT_UROWID (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   target           OUT     NOCOPY UROWID);

DBMS_MLE.IMPORT_FROM_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   target           OUT     NOCOPY VARCHAR2 CHARACTER SET ANY_CS);

DBMS_MLE.IMPORT_FROM_MLE (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   target           OUT     NOCOPY YMINTERVAL_UNCONSTRAINED);

DBMS_MLE.IMPORT_CHAR (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   target           OUT     CHAR CHARACTER SET ANY_CS);

DBMS_MLE.IMPORT_RAW (
   context_handle   IN      context_handle_t,
   property_name    IN      VARCHAR2,
   target           OUT     RAW);

パラメータ

表120-15 IMPORT_FROM_MLEプロシージャのパラメータ

パラメータ 説明
context_handle 現行のセッションのMLEコンテキストへのハンドル。
property_name 取得するプロパティの名前。property_nameNULLまたは空の文字列の場合は、ORA-04157エラーがスローされます。
target 取得したプロパティが格納されるPL/SQL変数。

使用上のノート

IMPORT_FROM_MLEプロシージャは、次の例外をスローする場合があります。
  • ORA-01031: コール元に十分な権限がない場合。
  • ORA-04108: 現在のコンテナ、現在のユーザーまたは現在有効になっているロールが、コンテキストの作成時に有効になっているものと異なる場合。
  • ORA-04153: コンテキスト・ハンドルが無効な場合。
  • ORA-04157: 渡されたproperty_nameの値がNULLまたは空の文字列の場合。
  • ORA-04205: 値をターゲットのPL/SQLタイプに変換できません。
  • ORA-06502: PL/SQL変数のバッファが、取得した値を保持するには小さすぎます。

120.3.17 PARSE_DEBUG_OUTPUTファンクション

Javaヒープ・ダンプ形式のMLEデバッグ出力が含まれているBLOBが指定されると、デバッグ出力のテキスト表現を戻します。

構文

DBMS_MLE.PARSE_DEBUG_OUTPUT(
   debugoutput         IN         BLOB)
RETURN JSON;

パラメータ

表120-16 PARSE_DEBUG_OUTPUTファンクションのパラメータ

パラメータ 説明
debugoutput Javaヒープ・ダンプ形式のMLEデバッグ出力。

戻り値

このファンクションは、デバッグ情報のJSON表現を戻します。出力は、DebugPointDataオブジェクトの配列です。

使用上のノート

このプロシージャでは、次のエラーが発生する場合があります。

  • ORA-04163: 入力がJavaヒープ・ダンプ形式でない場合。
  • ORA-04166: デバッグ出力が無効な場合。

参照:

デバッグ出力の分析の詳細は、『Oracle Database JavaScript開発者ガイド』を参照してください

120.3.18 SET_CTX_STDERRプロシージャ

このプロシージャは、MLEコンテキストのstderrストリームを指定のCLOBにリダイレクトします。このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.SET_CTX_STDERR(
      context_handle  IN            context_handle_t,
      sink            IN OUT        NOCOPY CLOB CHARACTER SET ANY_CS);

パラメータ

表120-17 SET_CTX_STDERRプロシージャのパラメータ

パラメータ 説明
context_handle 現行のセッションのMLEコンテキストへのハンドル。
sink stderrのリダイレクト先のCLOBシンク。NULL値を指定すると、ORA-06530エラーが発生します。

使用上のノート

これまでにバッファに入れられた出力は、新しいシンクにリダイレクトされる前に既存のシンクにフラッシュされます。

このプロシージャでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合。
  • ORA-04153: コンテキスト・ハンドルが無効な場合。
  • ORA-06530: シンクがNULLの場合。

120.3.19 SET_CTX_STDERR_TO_DBMS_OUTPUTプロシージャ

このプロシージャは、MLEコンテキストのstderrストリームをDBMS_OUTPUTにリダイレクトします。このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.SET_CTX_STDERR_TO_DBMS_OUTPUT(
   context_handle      IN      context_handle_t);

パラメータ

表120-18 SET_CTX_STDERR_TO_DBMS_OUTPUTプロシージャのパラメータ

パラメータ 説明
context_handle 現行のセッションのMLEコンテキストへのハンドル。

使用上のノート

これまでにバッファされた出力は、DBMS_OUTPUTにリダイレクトされる前に既存のシンクにフラッシュされます。

このプロシージャでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合。
  • ORA-04153: コンテキスト・ハンドルが無効な場合。

120.3.20 SET_CTX_STDOUTプロシージャ

このプロシージャは、MLEコンテキストのstdoutストリームを指定のCLOBにリダイレクトします。このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.SET_CTX_STDOUT(
   context_handle      IN context_handle_t,
   sink                IN OUT NOCOPY CLOB CHARACTER SET ANY_CS);

パラメータ

表120-19 SET_CTX_STDOUTプロシージャのパラメータ

パラメータ 説明
context_handle 現行のセッションのMLEコンテキストへのハンドル。
sink stdoutのリダイレクト先のCLOBシンク。NULL値を指定すると、ORA-06530エラーが発生します。

使用上のノート

これまでにバッファに入れられた出力は、新しいシンクにリダイレクトされる前に既存のシンクにフラッシュされます。

このプロシージャでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合。
  • ORA-04153: コンテキスト・ハンドルが無効な場合。
  • ORA-06530: シンクがNULLの場合。

120.3.21 SET_CTX_STDOUT_TO_DBMS_OUTPUTプロシージャ

このプロシージャは、MLEコンテキストのstdoutストリームをDBMS_OUTPUTにリダイレクトします。このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.SET_CTX_STDOUT_TO_DBMS_OUTPUT(
   context_handle      IN      context_handle_t);

パラメータ

表120-20 SET_CTX_STDOUT_TO_DBMS_OUTPUTプロシージャのパラメータ

パラメータ 説明
context_handle 現行のセッションのMLEコンテキストへのハンドル。

使用上のノート

これまでにバッファされた出力は、DBMS_OUTPUTにリダイレクトされる前に既存のシンクにフラッシュされます。

このプロシージャでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合。
  • ORA-04153: コンテキスト・ハンドルが無効な場合。

120.3.22 SET_ICS_STDERRプロシージャ

このプロシージャは、現行のセッションのコール・ユーザーについて、インラインされたMLEコール仕様コンテキストのstderrストリームを指定のCLOBにリダイレクトします。このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.SET_ICS_STDERR(
      name            IN            VARCHAR2,
      sink            IN OUT        NOCOPY CLOB CHARACTER SET ANY_CS);

パラメータ

表120-21 SET_ICS_STDERRプロシージャのパラメータ

パラメータ 説明
name インラインされたMLEコール仕様の名前。
sink stderrのリダイレクト先のCLOB

使用上のノート

これまでにバッファに入れられた出力は、新しいシンクにリダイレクトされる前に既存のシンクにフラッシュされます。

このプロシージャでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合。
  • ORA-04043: コール仕様が存在しない場合。
  • ORA-06530: シンクがNULLの場合。

120.3.23 SET_ICS_STDERR_TO_DBMS_OUTPUTプロシージャ

このプロシージャは、現行のセッションのコール・ユーザーについて、インラインされたMLEコール仕様コンテキストのstderrストリームをDBMS_OUTPUTにリダイレクトします。このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.SET_ICS_STDERR_TO_DBMS_OUTPUT(
   name      IN      VARCHAR2);

パラメータ

表120-22 SET_ICS_STDERR_TO_DBMS_OUTPUTプロシージャのパラメータ

パラメータ 説明
name インラインされたMLEコール仕様の名前。

使用上のノート

これまでにバッファされた出力は、DBMS_OUTPUTにリダイレクトされる前に既存のシンクにフラッシュされます。

このプロシージャでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合。
  • ORA-04043: コール仕様が存在しない場合。

120.3.24 SET_ICS_STDOUTプロシージャ

このプロシージャは、現行のセッションのインラインされたMLEコール仕様コンテキストのstdoutストリームを指定のCLOBにリダイレクトします。

構文

DBMS_MLE.SET_ICS_STDOUT(
    name         IN         VARCHAR2,
    sink         IN         OUT NOCOPY CLOB CHARACTER SET ANY_CS);

パラメータ

表120-23 SET_ICS_STDOUTプロシージャのパラメータ

パラメータ 説明
name インラインされたMLEコール仕様の名前。
sink stdoutのリダイレクト先のCLOBシンク。NULL値を指定すると、ORA-06530エラーが発生します。

使用上のノート

これまでにバッファに入れられた出力は、新しいシンクにリダイレクトされる前に既存のシンクにフラッシュされます。

このプロシージャでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合。
  • ORA-04043: コール仕様が存在しない場合。
  • ORA-06530: シンクがNULLの場合。

120.3.25 SET_ICS_STDOUT_TO_DBMS_OUTPUTプロシージャ

このプロシージャは、現行のセッションのコール・ユーザーについて、インラインされたコール仕様コンテキストのstdoutストリームをDBMS_OUTPUTにリダイレクトします。このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.SET_ICS_STDOUT_TO_DBMS_OUTPUT(
   name      IN      VARCHAR2);

パラメータ

表120-24 SET_ICS_STDOUT_TO_DBMS_OUTPUTプロシージャのパラメータ

パラメータ 説明
name インラインされたコール仕様の名前。

使用上のノート

これまでにバッファされた出力は、DBMS_OUTPUTにリダイレクトされる前に既存のシンクにフラッシュされます。

このプロシージャでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合。
  • ORA-04043: コール仕様が存在しない場合。

120.3.26 SET_STDERRプロシージャ

このプロシージャは、MLEコンテキストのstderrストリームを指定のCLOBにリダイレクトします。このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.SET_STDERR(
      sink            IN OUT       NOCOPY CLOB CHARACTER SET ANY_CS);

DBMS_MLE.SET_STDERR(
      module_name     IN           VARCHAR2,
      sink            IN OUT       NOCOPY CLOB CHARACTER SET ANY_CS);

DBMS_MLE.SET_STDERR(
      module_name     IN           VARCHAR2,
      env_name        IN           VARCHAR2,
      sink            IN OUT       NOCOPY CLOB CHARACTER SET ANY_CS);

パラメータ

表120-25 SET_STDERRプロシージャのパラメータ

パラメータ 説明
module_name MLEモジュールの名前。
env_name MLE環境の名前。
sink stdoutのリダイレクト先のCLOB。

使用上のノート

パラメータを指定せずにコールされると、このプロシージャは、既存のコンテキストおよび将来作成されるコンテキストすべてに適用されます。それ以外の場合は、指定したモジュール(またはモジュールと環境の組合せ)に関連付けられたコンテキストのみが影響を受けます。

環境を指定しない場合は、指定したモジュールと組込みの環境によって定義されるコンテキストが使用されます。

これまでにバッファに入れられた出力は、新しいシンクにリダイレクトされる前に既存のシンクにフラッシュされます。

このプロシージャでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合。
  • ORA-04103: モジュールが存在しない場合。
  • ORA-04105: 環境が存在しない場合。
  • ORA-06530: シンクがNULLの場合。

120.3.27 SET_STDERR_TO_DBMS_OUTPUTプロシージャ

このプロシージャは、MLEコンテキストのstderrストリームをDBMS_OUTPUTにリダイレクトします。このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.SET_STDERR_TO_DBMS_OUTPUT();

DBMS_MLE.SET_STDERR_TO_DBMS_OUTPUT(
   module_name         IN         VARCHAR2);

DBMS_MLE.SET_STDERR_TO_DBMS_OUTPUT(
   module_name         IN         VARCHAR2,
   env_name            IN         VARCHAR2);

パラメータ

表120-26 SET_STDERR_TO_DBMS_OUTPUTファンクションのパラメータ

パラメータ 説明
module_name MLEモジュールの名前。
env_name MLE環境の名前。

使用上のノート

パラメータを指定せずにコールされると、このプロシージャは、既存のコンテキストおよび将来作成されるコンテキストすべてに適用されます。それ以外の場合は、指定したモジュール(またはモジュールと環境の組合せ)に関連付けられたコンテキストのみが影響を受けます。

環境を指定しない場合は、指定したモジュールと組込みの環境によって定義されるコンテキストが使用されます。

これまでにバッファされた出力は、DBMS_OUTPUTにリダイレクトされる前に既存のシンクにフラッシュされます。

このプロシージャでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合
  • ORA-04103: モジュールが存在しない場合
  • ORA-04105: 環境が存在しない場合

120.3.28 SET_STDOUTプロシージャ

このプロシージャは、MLEコンテキストのstdoutストリームを指定のCLOBにリダイレクトします。このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.SET_STDOUT(
   sink          IN OUT   NOCOPY CLOB CHARACTER SET ANY_CS);

DBMS_MLE.SET_STDOUT(
   module_name   IN       VARCHAR2,
   sink          IN OUT   NOCOPY CLOB CHARACTER SET ANY_CS);

DBMS_MLE.SET_STDOUT(
   module_name   IN       VARCHAR2,
   env_name      IN       VARCHAR2,
   sink          IN OUT   NOCOPY CLOB CHARACTER SET ANY_CS);

パラメータ

表120-27 SET_STDOUTプロシージャのパラメータ

パラメータ 説明
module_name MLEモジュールの名前。
env_name MLE環境の名前。
sink stdoutのリダイレクト先のCLOB。

使用上のノート

パラメータを指定せずにコールされると、このプロシージャは、既存のコンテキストおよび将来作成されるコンテキストすべてに適用されます。それ以外の場合は、指定したモジュール(またはモジュールと環境の組合せ)に関連付けられたコンテキストのみが影響を受けます。

環境を指定しない場合は、指定したモジュールと組込みの環境によって定義されるコンテキストが使用されます。

これまでにバッファに入れられた出力は、新しいシンクにリダイレクトされる前に既存のシンクにフラッシュされます。

このプロシージャでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合
  • ORA-04103: モジュールが存在しない場合
  • ORA-04105: 環境が存在しない場合
  • ORA-06530: シンクがNULLの場合。

120.3.29 SET_STDOUT_TO_DBMS_OUTPUTプロシージャ

このプロシージャは、MLEコンテキストのstdoutストリームをDBMS_OUTPUTにリダイレクトします。このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。

構文

DBMS_MLE.SET_STDOUT_TO_DBMS_OUTPUT();

DBMS_MLE.SET_STDOUT_TO_DBMS_OUTPUT(
      module_name      IN      VARCHAR2);

DBMS_MLE.SET_STDOUT_TO_DBMS_OUTPUT(
      module_name      IN      VARCHAR2,
      env_name         IN      VARCHAR2);

パラメータ

表120-28 SET_STDOUT_TO_DBMS_OUTPUTファンクションのパラメータ

パラメータ 説明
module_name MLEモジュールの名前。
env_name MLE環境の名前。

使用上のノート

パラメータを指定せずにコールされると、このプロシージャは、既存のコンテキストおよび将来作成されるコンテキストすべてに適用されます。それ以外の場合は、指定したモジュール(またはモジュールと環境の組合せ)に関連付けられたコンテキストのみが影響を受けます。

環境を指定しない場合は、指定したモジュールと組込みの環境によって定義されるコンテキストが使用されます。

これまでにバッファされた出力は、DBMS_OUTPUTにリダイレクトされる前に既存のシンクにフラッシュされます。

このプロシージャでは、次のエラーが発生する場合があります。
  • ORA-01031: コール元に十分な権限がない場合
  • ORA-04103: モジュールが存在しない場合
  • ORA-04105: 環境が存在しない場合