動的実行の概要

匿名JavaScriptコード・スニペットは、DBMS_MLE PL/SQLパッケージを介して実行できます。

動的MLEスニペットを実行するには、プロシージャDBMS_MLE.eval()を使用します。このプロシージャは次の引数を使用します:

引数名 オプションかどうか
CONTEXT_HANDLE RAW(16) いいえ
LANGUAGE_ID VARCHAR2(64) いいえ
SOURCE CLOB いいえ
RESULT CLOB はい
SOURCE_NAME VARCHAR2 はい

引数SOURCE_NAMEは、本来であればランダムに命名されるJavaScriptコード・ブロックの名前を指定するために、オプションで使用します。

JavaScriptコードは、次のコードに示すように、PL/SQLにインラインで指定できます:

SET SERVEROUTPUT ON;

DECLARE
    l_ctx DBMS_MLE.context_handle_t;
    l_jscode CLOB;
BEGIN
    l_ctx := DBMS_MLE.create_context;
    l_jscode := q'~
        console.log('Hello World, this is DBMS_MLE')
    ~';
    DBMS_MLE.eval(
        context_handle => l_ctx,
        language_id => 'JAVASCRIPT',
        source => l_jscode,
        source_name => 'My JS Snippet'
    );
END;
/

この例を実行すると、次のように出力されます:

Hello World, this is DBMS_MLE

前述のコードは、JavaScriptコードの動的な起動に関する次の概念を示しています:

  • 実行コンテキストは、明示的に作成する必要があります

  • JavaScriptコードは、キャラクタ・ラージ・オブジェクト(CLOB)またはVARCHAR2変数として指定します

  • コンテキストは、明示的に評価する必要があります

JavaScriptを動的に実行するときには、PL/SQLとJavaScriptの両方が存在します。指定されたコード・スニペットをネームスペースの外部で再使用することはできません。console.logへのコールの出力は、画面に出力するためにDBMS_OUTPUTに渡されます。

関連項目:

  • MLEを使用した動的実行の詳細は、「動的MLE実行の概要」を参照してください

  • プロシージャDBMS_MLE.eval()RESULT引数の詳細は、「最終実行の結果の戻し」を参照してください