Oracle Database Multilingual Engine (MLE)¶
Welcome to the Oracle Database Multilingual Engine (MLE). MLE is an experimental feature for the Oracle Database 12c. MLE enables developers to work efficiently with DB-resident data in modern programming languages and development environments of their choice.
This section contains the definition of some terms used throughout this document.
A Database Type is one of the types known to the Oracle Database. These types include numeric types like NUMBER, and character sequence types like VARCHAR2.
A user-defined extension to the Oracle Database is a functional unit that is not provided by Oracle. The extension can be written in any of the supported extension languages.
The Oracle Database provides multiple ways to extend the database with user-defined functionality like user-defined functions (UDFs), user-defined aggregations (UDAs), stored procedures, table functions, triggers, to name a few.
A user-defined function (also UDF) is an extension to the database that
can be used in queries. It returns one value for every time the function is
called. If used inside a
select query, it is called once for every row.
A stored procedure is an extension to the database that is not associated with a query. A user has to explicitly call a stored procedure. Furthermore, a stored procedure does not have a return value.
A callout is a SQL statement that is executed from within a UDF or a stored procedure. Callouts allow users to send SQL statements or PL/SQL blocks to the database from within a UDF or a stored procedure. This interaction is the primary building block to implement business logic inside the database.
This version of Oracle Database MLE has a limited set of features. It only supports user-defined functions and stored procedures over a limited set of data types:
The support for VARCHAR2 is limited to the US7ASCII encoding. This encoding limit is also reflected at the deployment level: All source code deployed into an Oracle Database MLE instance is considered US7ASCII. There is currently no support for other types, but they are under active development.
supported execution engine is the SQL engine that can be invoked from PL/SQL
select into or
function directly from within a PL/SQL block without integrating it into a
Disclaimer & Feedback¶
Oracle Database Multilingual Engine (MLE for short) is an experimental option for Oracle Database 12c. This software is expected to be used as provided. Any changes to the database setup might result in an unusable database as well as loss of data and functionality.
Oracle Database MLE is being developed by Oracle Labs. This release is meant to give you a glimpse of our vision. Our goal is to engage with the community early. The primary goal of this early release is to get feedback from the community.
We have setup multiple feedback channels and would be extremely grateful for any comments, suggestions, or bug reports:
Some of the questions we want users to take a look at, are:
- Is it easy to write JS functions and use them in SELECT, WHERE clauses, sub selects, INSERTs, etc.?
- Is it easy to write JS functions with more sophisticated parameters (more than one, different data types, etc)?
- Is it easy to write SQL within JS functions to get and put data from and into the database?
- Is it convenient to load npm packages, also when they require other npm packages?
- How easy is it to load multiple npm packages in your JS function?
- Do you think you would be allowed loading third party open source packages into a production database in the first place?
- Do you like the way how you have to declare your functions today, what can be done better, etc.
We are also actively looking for use cases, feature requests, and bug reports.