Search code examples
oracle-databaseplsqloracle-apexplsqldeveloper

Can't enable JavaScript MLE on APEX


I am running Oracle APEX 21.1 (build 21.1.3.r1531102) on the 21c express database and for some reason I cannot execute server side code with the JavaScript MLE option.

In the develpment environment it does not show the option at all.

In the SQL commands screen I can only execute pure sql or PL/SQL. If I try to execute the following example

SET SERVEROUTPUT ON;
DECLARE
  ctx dbms_mle.context_handle_t;
  user_code clob := q'~
    console.log('Hello World!');
  ~';
BEGIN
  ctx := dbms_mle.create_context();
  dbms_mle.eval(ctx, 'JAVASCRIPT', user_code);
  dbms_mle.drop_context(ctx);
EXCEPTION
  WHEN others THEN
    dbms_mle.drop_context(ctx);
    RAISE;
END;

I get the following message:

ORA-00922: missing or invalid option
ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_210100", line 673
ORA-06512: at "SYS.DBMS_SYS_SQL", line 1703
ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_210100", line 659
ORA-06512: at "APEX_210100.WWV_FLOW_DYNAMIC_EXEC", line 1854

Solution

  • A few weeks ago we solved this and I forgot to update this question.

    After some work we found out that user needed to be granted access to MLE. I was not that one who fixed, but I've asked the code to post here, check below:

    GRANT MLE JAVA
    
    GRANT EXECUTE DYNAMIC MLE to XYZ;
    
    GRANT EXECUTE ON JAVASCRIPT TO XYZ;