最終実行の結果の戻し

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