Returning the Result of the Last Execution

Use the result argument to get the outcome of the last execution.

A variant of the DBMS_MLE.eval() procedure takes an additional CLOB argument, result. Such a call to DBMS_MLE.eval() appends the outcome of the execution of the last statement in the provided dynamic MLE snippet to the CLOB provided as the result parameter.

This option is useful in the implementation of an interactive application, such as a Read-Eval-Print-Loop (REPL) server, to mimic the behavior of a similar REPL session in Node.js.

Example: Returning the Result of the Last Execution

SET SERVEROUTPUT ON;
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:

result: 42