132 DBMS_MLE
DBMS_MLEパッケージを使用すると、ユーザーはOracle Database内でJavaScriptコードを実行し、PL/SQLとJavaScriptの間でシームレスにデータを交換できます。 JavaScriptコード自体は、組込みJavaScriptモジュールを介してPL/SQLおよびSQLを実行できます。 JavaScriptデータ型は、Oracle Databaseデータ型に自動的にマップされ、その逆も同様です。
DBMS_MLEパッケージを使用すると、開発者はJavaScriptでデータ処理ロジックを記述できます。
この章のトピックは、次のとおりです:
132.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!
132.2 DBMS_MLEのセキュリティ・モデル
MLE機能へのアクセスは、データベース権限によって保護されます。 ユーザーは、MLE実行に関連するファンクションおよびプロシージャをコールする際には、EXECUTE DYNAMIC MLE権限を持っている必要があります。 これに加えて、ユーザーがJavaScriptコードを実行するには、EXECUTE ON JAVASCRIPT権限も持っている必要があります。 いずれかのDBMS_MLEサブプログラムをコールするユーザーに適切な権限がない場合は、ORA-01031エラーが発生します。 各DBMS_MLEサブプログラムのコールに必要な権限については、「DBMS_MLEサブプログラムの要約」を参照してください。
132.3 DBMS_MLEサブプログラムの要約
この表は、DBMS_MLEサブプログラムを示し、簡単に説明しています。
表132-1 DBMS_MLEパッケージ・サブプログラム
| サブプログラム | 説明 |
|---|---|
| JavaScriptでスニペットを実行するためのMLEコンテキストを作成します。 | |
| このプロシージャは、指定されたMLEコンテキストのstderrストリームを無効にして、stderrへの今後の書込みが破棄されるようにします。 | |
このプロシージャは、指定されたMLEコンテキストのstdoutストリームを無効にして、stdoutへの今後の書込みが破棄されるようにします。
|
|
| DISABLE_DEBUGGINGプロシージャ | このプロシージャは、現行のセッションについて現在有効になっているデバッグポイントを無効にします。 |
| DISABLE_ICS_STDERRプロシージャ | このプロシージャは、インラインされたMLEコール仕様コンテキストのstderrストリームを無効にして、現行のセッションのコール・ユーザーについてstderrへの今後の書込みが破棄されるようにします。
|
| DISABLE_ICS_STDOUTプロシージャ | このプロシージャは、インラインされたコール仕様コンテキストのstdoutストリームを無効にして、現行のセッションのコール・ユーザーについてstdoutへの今後の書込みが破棄されるようにします。
|
このプロシージャは、MLEコンテキストのstderrストリームを無効にして、stderrへの今後の書込みが破棄されるようにします。
|
|
| このプロシージャは、MLEコンテキストのstdoutストリームを無効にして、stdoutへの今後の書込みが破棄されるようにします。 | |
このプロシージャは、CREATE_CONTEXTプロシージャを使用して以前に作成されたMLEコンテキストを削除するために使用します。 コンテキストが削除されると、コンテキスト・ハンドルは無効になり、使用できなくなります。
|
|
| ENABLE_DEBUGGINGプロシージャ | このプロシージャは、現行のセッションについて一連のデバッグポイントを有効にします。 |
| このプロシージャは、コンテキスト・ハンドルで識別されるコンテキスト内で指定のJavaScriptコードを実行します。 | |
| このプロシージャを使用すると、MLEコンテキストの名前付きプロパティに特定の値を適切に変換したうえで割り当てることができます。 プロパティが存在しない場合には作成されます。 | |
| このファンクションは、使用可能なMLE言語のセットを戻します。 | |
| GET_CTX_ERROR_STACKファンクション | このファンクションは、指定された実行コンテキストで最新のアプリケーション・エラーのJavaScriptスタック・トレースを取得します。 |
| GET_ERROR_STACKファンクション | このファンクションは、指定されたモジュール(およびオプションの環境)のコールで最新のアプリケーション・エラーのJavaScriptスタック・トレースを取得します。 |
| このプロシージャは、MLEコンテキストから名前付きプロパティの値を取得して、要求されたPL/SQLタイプに変換します。 | |
| PARSE_DEBUG_OUTPUTファンクション | Javaヒープ・ダンプ形式のMLEデバッグ出力が含まれているBLOBが指定されると、このファンクションはデバッグ出力のテキスト表現を戻します。 |
このプロシージャは、MLEコンテキストのstderrストリームを指定のCLOBにリダイレクトします。
|
|
このプロシージャは、MLEコンテキストのstderrストリームをDBMS_OUTPUTにリダイレクトします。
|
|
このプロシージャは、MLEコンテキストのstdoutストリームを指定のCLOBにリダイレクトします。
|
|
このプロシージャは、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にリダイレクトします。
|
このプロシージャは、MLEコンテキストのstderrストリームを指定のCLOBにリダイレクトします。
|
|
このプロシージャは、MLEコンテキストのstderrストリームをDBMS_OUTPUTにリダイレクトします。
|
|
このプロシージャは、MLEコンテキストのstdoutストリームを指定のCLOBにリダイレクトします。
|
|
このプロシージャは、MLEコンテキストのstdoutストリームをDBMS_OUTPUTにリダイレクトします。
|
132.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;パラメータ
表132-2 CREATE_CONTEXTファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
environment |
コンテキストを構成するMLE環境のスキーマ名(大/小文字区別)。 オプション。 |
戻り値
このファンクションは、EXPORT_TO_MLEやEVALなどの後続の操作で使用するために、セッション内のコンテキストを一意に識別するハンドルを戻します。
使用上のノート
コンテキストの存続期間は、そのコンテキストが作成されたセッションに制限されます。 クライアント・セッションが終了すると、そのすべてのコンテキストが削除されます。 セッション状態が(たとえば、DBMS_SESSION.RESET_PACKAGEをコールすることによって)リセットされると、セッションで作成されたMLEコンテキストもすべて削除されます。 JavaScriptコードは、コンテキストの作成時に有効なユーザー、ロールおよびスキーマを使用してコンテキスト内で評価されます。
ORA-01031: コール元に十分な権限がない場合。ORA-04105: 環境が存在しない場合。
参照:
JavaScriptコードを実行するために必要な権限の詳細は、『Oracle Database JavaScript開発者ガイド』を参照してください
132.3.2 DISABLE_CTX_STDERRプロシージャ
このプロシージャは、指定されたMLEコンテキストのstderrストリームを無効にして、stderrへの今後の書込みが破棄されるようにします。 このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。
構文
DBMS_MLE.DISABLE_CTX_STDERR(
context_handle IN context_handle_t);
パラメータ
表132-3 DISABLE_CTX_STDERRプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
context_handle |
現行のセッションのMLEコンテキストへのハンドル。 |
使用上のノート
これまでバッファに入れられた出力は、既存のシンクにフラッシュされます。
ORA-01031: コール元に十分な権限がない場合
132.3.3 DISABLE_CTX_STDOUTプロシージャ
このプロシージャは、指定されたMLEコンテキストのstdoutストリームを無効にして、stdoutへの今後の書込みが破棄されるようにします。 このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。
構文
DBMS_MLE.DISABLE_CTX_STDOUT(
context_handle IN context_handle_t);
パラメータ
表132-4 DISABLE_CTX_STDOUTプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
context_handle |
現行のセッションのMLEコンテキストへのハンドル。 |
使用上のノート
これまでバッファに入れられた出力は、既存のシンクにフラッシュされます。
ORA-01031: コール元に十分な権限がない場合
132.3.4 DISABLE_DEBUGGINGプロシージャ
このプロシージャは、現行のセッションについて現在有効になっているデバッグポイントを無効にします。 実行後のデバッグでは、プログラムの実行後に分析に使用されるランタイム状態を収集できます。 実行後のデバッグは、モジュールでデプロイされたMLEコードにのみ適用でき、動的実行を使用してデプロイされたコードには適用できません。
構文
DBMS_MLE.DISABLE_DEBUGGING();
使用上のノート
現在有効になっているデバッグポイントがない場合、このプロシージャは効果がありません。 DBMS_MLE.ENABLE_DEBUGGINGへの後続のコールでデバッグを再度有効にできます。
参照:
MLEを使用した実行後のデバッグの詳細は、『Oracle Database JavaScript開発者ガイド』を参照してください
132.3.5 DISABLE_ICS_STDERRプロシージャ
このプロシージャは、インラインされたMLEコール仕様コンテキストのstderrストリームを無効にして、現行のセッションのコール・ユーザーについてstderrへの今後の書込みが破棄されるようにします。 このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。
構文
DBMS_MLE.DISABLE_ICS_STDERR(
name IN VARCHAR2);パラメータ
表132-5 DISABLE_ICS_STDERRプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
name |
インラインされたMLEコール仕様の名前。 |
使用上のノート
これまでバッファに入れられた出力は、既存のシンクにフラッシュされます。
ORA-01031: コール元に十分な権限がない場合。ORA-04043: コール仕様が存在しない場合。
132.3.6 DISABLE_ICS_STDOUTプロシージャ
このプロシージャは、インラインされたコール仕様コンテキストのstdoutストリームを無効にして、現行のセッションのコール・ユーザーについてstdoutへの今後の書込みが破棄されるようにします。 このファンクションを実行するには、EXECUTE DYNAMIC MLE権限が必要です。
構文
DBMS_MLE.DISABLE_ICS_STDOUT(
name IN VARCHAR2);
パラメータ
表132-6 DISABLE_ICS_STDOUTプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
name |
インラインされたMLEコール仕様の名前。 |
使用上のノート
これまでバッファに入れられた出力は、既存のシンクにフラッシュされます。
ORA-01031: コール元に十分な権限がない場合。ORA-04043: コール仕様が存在しない場合。
132.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);
パラメータ
表132-7 DISABLE_STDERRファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
module_name |
MLEモジュールの名前。 |
env_name |
MLE環境の名前。 |
使用上のノート
パラメータを指定せずにコールされると、このプロシージャは、既存のコンテキストおよび将来作成されるコンテキストすべてに適用されます。 それ以外の場合は、指定したモジュール(またはモジュールと環境の組合せ)に関連付けられたコンテキストのみが影響を受けます。
環境を指定しない場合は、指定したモジュールと組込みの環境によって定義されるコンテキストが使用されます。
これまでバッファに入れられた出力は、既存のシンクにフラッシュされます。
ORA-01031: コール元に十分な権限がない場合ORA-04103: モジュールが存在しない場合ORA-04105: 環境が存在しない場合
132.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);パラメータ
表132-8 DISABLE_STDOUTファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
module_name |
MLEモジュールの名前。 |
env_name |
MLE環境の名前。 |
使用上のノート
パラメータを指定せずにコールされると、このプロシージャは、既存のコンテキストおよび将来作成されるコンテキストすべてに適用されます。 それ以外の場合は、指定したモジュール(またはモジュールと環境の組合せ)に関連付けられたコンテキストのみが影響を受けます。
環境を指定しない場合は、指定したモジュールと組込みの環境によって定義されるコンテキストが使用されます。
これまでバッファに入れられた出力は、既存のシンクにフラッシュされます。
ORA-01031: コール元に十分な権限がない場合ORA-04103: モジュールが存在しない場合ORA-04105: 環境が存在しない場合
132.3.9 DROP_CONTEXTプロシージャ
このプロシージャは、CREATE_CONTEXTファンクションを使用して以前に作成されたMLEコンテキストを削除するために使用します。 コンテキストが削除されると、コンテキスト・ハンドルは無効になり、使用できなくなります。 このプロシージャを実行するには、EXECUTE DYNAMIC MLE権限が必要です。
構文
DBMS_MLE.DROP_CONTEXT( context_handle IN context_handle_t);
パラメータ
表132-9 DROP_CONTEXTプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
context_handle |
現行のセッションのMLEコンテキストへのハンドル。 |
使用上のノート
コール元に十分な権限がない場合には、プロシージャでORA-01031エラーが発生する可能性があります。
132.3.10 ENABLE_DEBUGGINGプロシージャ
このプロシージャは、現行のセッションについて一連のデバッグポイントを有効にします。 実行後のデバッグでは、プログラムの実行後に分析に使用されるランタイム状態を収集できます。 実行後のデバッグは、モジュールでデプロイされたMLEコードにのみ適用でき、動的実行を使用してデプロイされたコードには適用できません。
構文
DBMS_MLE.ENABLE_DEBUGGING(
debugspec IN JSON,
sink OUT NOCOPY BLOB);
パラメータ
表132-10 ENABLE_DEBUGGINGプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
debugspec |
収集されるデバッグ情報を識別するJSONドキュメントとしてのデバッグ仕様。 |
sink |
デバッグ出力を記録するシンク。 |
使用上のノート
同じセッションでこのプロシージャを複数回コールすると、既存のデバッグポイントのセットが置き換えられます。
セッションが終了すると、有効になっているすべてのデバッグポイントが自動的に無効になります。
ORA-04103: モジュールが存在しない場合。ORA-04162: MLE組込みのモジュールのデバッグが試行された場合。ORA-04164: コール元に、モジュールに対するCOLLECTDEBUGINFO権限がない場合。ORA-04165: 指定したデバッグ仕様が無効な場合。
参照:
MLEを使用した実行後のデバッグの詳細は、『Oracle Database JavaScript開発者ガイド』を参照してください
132.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);
パラメータ
表132-11 EVALプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
context_handle |
MLEコンテキストへのハンドル。 |
language_id |
指定されたソース・コードの言語。 Oracle 23aiでは値'JAVASCRIPT'を指定する必要があります。
|
source |
実行するソース・コード。 |
result |
ソース・コードの評価結果が付加されるバッファ。 オプション。 |
options |
将来の使用のために予約されています。 オプション。 |
source_name |
スタック・トレース内でスニペットを識別するために使用される、指定したソース・コードの名前。 オプション。 |
使用上のノート
オプションのsource_nameパラメータを指定する場合は、optionsパラメータをNULLまたは""として定義する必要があります。
ORA-01031: コール元に十分な権限がない場合。ORA-04108: 現在のコンテナ、現在のユーザーまたは現在有効になっているロールが、コンテキストの作成時に有効になっているものと異なる場合。ORA-04153: コンテキスト・ハンドルが無効な場合。ORA-04161: 評価されるソース・コードが例外をスローする場合。
132.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);パラメータ
表132-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: コンテキスト・ハンドルが無効な場合。
132.3.13 GET_AVAILABLE_LANGUAGESファンクション
このファンクションは、使用可能なMLE言語のセットを戻します。
構文
DBMS_MLE.GET_AVAILABLE_LANGUAGES() RETURN languages_t;
戻り値
DBMS_MLE.EVAL()の引数として使用できる、言語識別子の表として使用可能なMLE言語のセット。
132.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;
パラメータ
表132-13 GET_CTX_ERROR_STACKファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
context_handle |
現行のセッションのMLEコンテキストへのハンドル。 |
戻り値
エラー・スタック・フレームのコレクションで、各タイプはerror_frame_tです。 レポートするエラー・スタックがない場合、空のコレクションが戻されます。
使用上のノート
ORA-01031: コール元に十分な権限がない場合ORA-04153: コンテキスト・ハンドルが無効な場合。
132.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;
パラメータ
表132-14 GET_ERROR_STACKファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
module_name |
MLEモジュールの名前。 |
env_name |
MLE環境の名前。 オプション。 |
戻り値
エラー・スタック・フレームのコレクションで、各タイプはerror_frame_tです。 レポートするエラー・スタックがない場合、空のコレクションが戻されます。
使用上のノート
ORA-01031: コール元に十分な権限がない場合ORA-04170: モジュール名または環境名が無効な場合
132.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);パラメータ
表132-15 IMPORT_FROM_MLEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
context_handle |
現行のセッションのMLEコンテキストへのハンドル。 |
property_name |
取得するプロパティの名前。 property_nameがNULLまたは空の文字列の場合は、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変数のバッファが、取得した値を保持するには小さすぎます。
132.3.17 PARSE_DEBUG_OUTPUTファンクション
Javaヒープ・ダンプ形式のMLEデバッグ出力が含まれているBLOBが指定されると、デバッグ出力のテキスト表現を戻します。
構文
DBMS_MLE.PARSE_DEBUG_OUTPUT(
debugoutput IN BLOB)
RETURN JSON;
パラメータ
表132-16 PARSE_DEBUG_OUTPUTファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
debugoutput |
Javaヒープ・ダンプ形式のMLEデバッグ出力。 |
戻り値
このファンクションは、デバッグ情報のJSON表現を戻します。 出力は、DebugPointDataオブジェクトの配列です。
使用上のノート
このプロシージャでは、次のエラーが発生する場合があります。
ORA-04163: 入力がJavaヒープ・ダンプ形式でない場合。ORA-04166: デバッグ出力が無効な場合。
参照:
デバッグ出力の分析の詳細は、『Oracle Database JavaScript開発者ガイド』を参照してください
132.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);
パラメータ
表132-17 SET_CTX_STDERRプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
context_handle |
現行のセッションのMLEコンテキストへのハンドル。 |
sink |
stderrのリダイレクト先のCLOBシンク。 NULL値を指定すると、ORA-06530エラーが発生します。
|
使用上のノート
これまでにバッファに入れられた出力は、新しいシンクにリダイレクトされる前に既存のシンクにフラッシュされます。
ORA-01031: コール元に十分な権限がない場合。ORA-04153: コンテキスト・ハンドルが無効な場合。ORA-06530: シンクがNULLの場合。
132.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);
パラメータ
表132-18 SET_CTX_STDERR_TO_DBMS_OUTPUTプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
context_handle |
現行のセッションのMLEコンテキストへのハンドル。 |
使用上のノート
これまでにバッファされた出力は、DBMS_OUTPUTにリダイレクトされる前に既存のシンクにフラッシュされます。
ORA-01031: コール元に十分な権限がない場合。ORA-04153: コンテキスト・ハンドルが無効な場合。
132.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);
パラメータ
表132-19 SET_CTX_STDOUTプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
context_handle |
現行のセッションのMLEコンテキストへのハンドル。 |
sink |
stdoutのリダイレクト先のCLOBシンク。 NULL値を指定すると、ORA-06530エラーが発生します。
|
使用上のノート
これまでにバッファに入れられた出力は、新しいシンクにリダイレクトされる前に既存のシンクにフラッシュされます。
ORA-01031: コール元に十分な権限がない場合。ORA-04153: コンテキスト・ハンドルが無効な場合。ORA-06530: シンクがNULLの場合。
132.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);
パラメータ
表132-20 SET_CTX_STDOUT_TO_DBMS_OUTPUTプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
context_handle |
現行のセッションのMLEコンテキストへのハンドル。 |
使用上のノート
これまでにバッファされた出力は、DBMS_OUTPUTにリダイレクトされる前に既存のシンクにフラッシュされます。
ORA-01031: コール元に十分な権限がない場合。ORA-04153: コンテキスト・ハンドルが無効な場合。
132.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);
パラメータ
表132-21 SET_ICS_STDERRプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
name |
インラインされたMLEコール仕様の名前。 |
sink |
stderrのリダイレクト先のCLOB。
|
使用上のノート
これまでにバッファに入れられた出力は、新しいシンクにリダイレクトされる前に既存のシンクにフラッシュされます。
ORA-01031: コール元に十分な権限がない場合。ORA-04043: コール仕様が存在しない場合。ORA-06530: シンクがNULLの場合。
132.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);パラメータ
表132-22 SET_ICS_STDERR_TO_DBMS_OUTPUTプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
name |
インラインされたMLEコール仕様の名前。 |
使用上のノート
これまでにバッファされた出力は、DBMS_OUTPUTにリダイレクトされる前に既存のシンクにフラッシュされます。
ORA-01031: コール元に十分な権限がない場合。ORA-04043: コール仕様が存在しない場合。
132.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);
パラメータ
表132-23 SET_ICS_STDOUTプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
name |
インラインされたMLEコール仕様の名前。 |
sink |
stdoutのリダイレクト先のCLOBシンク。 NULL値を指定すると、ORA-06530エラーが発生します。
|
使用上のノート
これまでにバッファに入れられた出力は、新しいシンクにリダイレクトされる前に既存のシンクにフラッシュされます。
ORA-01031: コール元に十分な権限がない場合。ORA-04043: コール仕様が存在しない場合。ORA-06530: シンクがNULLの場合。
132.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);
パラメータ
表132-24 SET_ICS_STDOUT_TO_DBMS_OUTPUTプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
name |
インラインされたコール仕様の名前。 |
使用上のノート
これまでにバッファされた出力は、DBMS_OUTPUTにリダイレクトされる前に既存のシンクにフラッシュされます。
ORA-01031: コール元に十分な権限がない場合。ORA-04043: コール仕様が存在しない場合。
132.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);
パラメータ
表132-25 SET_STDERRプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
module_name |
MLEモジュールの名前。 |
env_name |
MLE環境の名前。 |
sink |
stdoutのリダイレクト先のCLOB。
|
使用上のノート
パラメータを指定せずにコールされると、このプロシージャは、既存のコンテキストおよび将来作成されるコンテキストすべてに適用されます。 それ以外の場合は、指定したモジュール(またはモジュールと環境の組合せ)に関連付けられたコンテキストのみが影響を受けます。
環境を指定しない場合は、指定したモジュールと組込みの環境によって定義されるコンテキストが使用されます。
これまでにバッファに入れられた出力は、新しいシンクにリダイレクトされる前に既存のシンクにフラッシュされます。
ORA-01031: コール元に十分な権限がない場合。ORA-04103: モジュールが存在しない場合。ORA-04105: 環境が存在しない場合。ORA-06530: シンクがNULLの場合。
132.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);
パラメータ
表132-26 SET_STDERR_TO_DBMS_OUTPUTファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
module_name |
MLEモジュールの名前。 |
env_name |
MLE環境の名前。 |
使用上のノート
パラメータを指定せずにコールされると、このプロシージャは、既存のコンテキストおよび将来作成されるコンテキストすべてに適用されます。 それ以外の場合は、指定したモジュール(またはモジュールと環境の組合せ)に関連付けられたコンテキストのみが影響を受けます。
環境を指定しない場合は、指定したモジュールと組込みの環境によって定義されるコンテキストが使用されます。
これまでにバッファされた出力は、DBMS_OUTPUTにリダイレクトされる前に既存のシンクにフラッシュされます。
ORA-01031: コール元に十分な権限がない場合ORA-04103: モジュールが存在しない場合ORA-04105: 環境が存在しない場合
132.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);
パラメータ
表132-27 SET_STDOUTプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
module_name |
MLEモジュールの名前。 |
env_name |
MLE環境の名前。 |
sink |
stdoutのリダイレクト先のCLOB。 |
使用上のノート
パラメータを指定せずにコールされると、このプロシージャは、既存のコンテキストおよび将来作成されるコンテキストすべてに適用されます。 それ以外の場合は、指定したモジュール(またはモジュールと環境の組合せ)に関連付けられたコンテキストのみが影響を受けます。
環境を指定しない場合は、指定したモジュールと組込みの環境によって定義されるコンテキストが使用されます。
これまでにバッファに入れられた出力は、新しいシンクにリダイレクトされる前に既存のシンクにフラッシュされます。
ORA-01031: コール元に十分な権限がない場合ORA-04103: モジュールが存在しない場合ORA-04105: 環境が存在しない場合ORA-06530: シンクがNULLの場合。
132.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);
パラメータ
表132-28 SET_STDOUT_TO_DBMS_OUTPUTファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
module_name |
MLEモジュールの名前。 |
env_name |
MLE環境の名前。 |
使用上のノート
パラメータを指定せずにコールされると、このプロシージャは、既存のコンテキストおよび将来作成されるコンテキストすべてに適用されます。 それ以外の場合は、指定したモジュール(またはモジュールと環境の組合せ)に関連付けられたコンテキストのみが影響を受けます。
環境を指定しない場合は、指定したモジュールと組込みの環境によって定義されるコンテキストが使用されます。
これまでにバッファされた出力は、DBMS_OUTPUTにリダイレクトされる前に既存のシンクにフラッシュされます。
ORA-01031: コール元に十分な権限がない場合ORA-04103: モジュールが存在しない場合ORA-04105: 環境が存在しない場合