Oracle’s Multilingual Engine (MLE) allows you to run JavaScript directly inside the database alongside PL/SQL. This lets you create procedures, functions, and modules in JavaScript that can be called from PL/SQL. MLE is great for beginners because it makes it easy to mix SQL and JavaScript, run small tests quickly, and write reusable logic in a familiar language.
Anonymous Inline JavaScript Procedure
Use Case: Quickly test JavaScript logic without creating a module.
CREATE OR REPLACE PROCEDURE inline_js_demo
AS MLE LANGUAGE JAVASCRIPT PURE
{{
let msg = 'Hello from inline JavaScript!';
console.log(msg);
}};
/
BEGIN
inline_js_demo;
END;
/
What happens:
Quick execution of JS logic.
No module creation needed.
Useful for small computations or testing.
Calculate Sum of Two Numbers (PURE Execution)
Teaches: PURE environment, simple math logic
JavaScript Module
CREATE OR REPLACE MLE MODULE calc_mod
LANGUAGE JAVASCRIPT AS
export function sum(a, b) {
return a + b;
}
/
PURE Environment
CREATE OR REPLACE MLE ENV calc_env
IMPORTS ('calc_mod' MODULE calc_mod) PURE;
/
Procedure
CREATE OR REPLACE FUNCTION js_add(p_a NUMBER, p_b NUMBER)
RETURN NUMBER
AS MLE MODULE calc_mod ENV calc_env
SIGNATURE 'sum(num,num)';
/
Execution
SELECT js_add(10, 25) AS result FROM dual;
Convert text to Uppercase Using JS
Teaches: JS string functions, returning values
Inline JS Function
CREATE OR REPLACE FUNCTION js_upper(p_text VARCHAR2)
RETURN VARCHAR2
AS MLE LANGUAGE JAVASCRIPT
{{
let input = session.getInput('TEXT');
return input.toUpperCase();
}}
;
/
Call It
SELECT js_upper('hello oracle js mle') FROM dual;
Calculate Average Salary from a Table Using JavaScript SQL Driver
Teaches: Executing SQL inside JavaScript (MLE SQL driver)
JavaScript Module
CREATE OR REPLACE MLE MODULE emp_mod
LANGUAGE JAVASCRIPT AS
import * as oracledb from "mle-js-oracledb";
export function avgSalary() {
let conn = oracledb.defaultConnection();
let rs = conn.query(SELECT AVG(salary) avg_sal FROM Employees);
return rs[0].AVG_SAL;
}
/
Procedure + Call Spec
CREATE OR REPLACE FUNCTION js_emp_avg
RETURN NUMBER
AS MLE MODULE emp_mod
SIGNATURE 'avgSalary()';
/
Usage
SELECT js_emp_avg FROM dual;
Top comments (0)