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パッケージのサブプログラム
サブプログラム | 説明 |
---|---|
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 にリダイレクトします。
|
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_MLE
やEVAL
などの後続の操作で使用するために、セッション内のコンテキストを一意に識別するハンドルを戻します。
使用上のノート
コンテキストの存続期間は、そのコンテキストが作成されたセッションに制限されます。クライアント・セッションが終了すると、そのすべてのコンテキストが削除されます。セッション状態が(たとえば、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_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変数のバッファが、取得した値を保持するには小さすぎます。
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
: 環境が存在しない場合