最終実行の結果の戻し
result
引数を使用して、最終実行の結果を取得します。
DBMS_MLE.eval()
プロシージャのバリアントには、追加のCLOB引数result
が使用されます。DBMS_MLE.eval()
をこのようにコールすると、指定された動的MLEスニペット内の最後の文の実行結果が、result
パラメータとして指定されたCLOBに追加されます。
このオプションは、Read-Eval-Print-Loop (REPL)サーバーなどの対話型アプリケーションの実装で、Node.js内の同様のREPLセッションの動作を模倣するために役立ちます。
例4-4 最終実行の結果の戻し
DECLARE
l_ctx dbms_mle.context_handle_t;
l_snippet CLOB;
l_result CLOB;
BEGIN
dbms_lob.createtemporary(
lob_loc => l_result,
cache => false,
dur => dbms_lob.session
);
l_ctx := dbms_mle.create_context();
l_snippet := q'~
let i = 21;
i *= 2;
~';
dbms_mle.eval(
context_handle => l_ctx,
language_id => 'JAVASCRIPT',
source => l_snippet,
result => l_result
);
dbms_output.put_line('result: ' || l_result);
dbms_mle.drop_context(l_ctx);
EXCEPTION
WHEN OTHERS THEN
dbms_mle.drop_context(l_ctx);
RAISE;
END;
/
結果:
result: 42
親トピック: 動的MLE実行の概要