This page contains a list of all my posts dealing with the Oracle database in one way or another.

Say hello to the all new server-side JavaScript LiveLab

In-Database JavaScript, powered by Multilingual Engine (MLE) debuted as a major feature in Oracle AI Database 26ai. Starting with the Developer Preview (Release 23.2) a few years ago, you could write user-defined functions and procedures in JavaScript in addition to PL/SQL and Java. But you may ask yourself: how do I get started? There’s an…

What’s new with MLE 23.26.0 – support for PL/SQL Collections and Records Pt 2

Oracle AI Database has been released! It ships with a whole raft of cool new features, including some the Multilingual Engine (MLE) team integrated for JavaScript. This article discusses one of them, support for PL/SQL Records and Collections. This is a rather wide topic, which is why you find the article broken into a small…

Troubleshooting missing privileges in dbms_xplan.display_cursor

This is a quick note-to-self to make sure a database account has all the necessary privileges to execute dbms_xplan.display_cursor. These are documented in the PL/SQL Packages and Types reference, summarised here for your convenience. Well, mine, actually 😀 WARNING: before you start granting the following privileges, make sure you have a change request recorded, and…

Does the MLE SQL Driver respect Virtual Private Database policies?

An interesting question came in today and it’s a great opportunity to elaborate a little on the nature of the Oracle JavaScript SQL Driver. As you may have heard, Oracle AI Database 26ai introduced JavaScript as a first class citizen right next to PL/SQL and Java. Now you’ve got another language to write database lambdas…

Multiple “for” clauses in dbms_stats’s method_opt

Recently, I encountered some frustration in recalling the correct syntax for the method_opt parameter in DBMS_STATS. This clause is primarily used when creating or deleting histograms. A histogram is a special type of column statistic that provides more detailed information about the data distribution in a table column. A histogram sorts values into “buckets,” as…

More good reasons to use bind variables in cursors in Oracle

Bind variables are a best practice in Oracle database development. They offer significant benefits in performance, security, and maintainability. One of the main reasons to use bind variables is protection against SQL injection, but performance plays an equally important role. This post is concerned with the latter. What are bind variables? As a database developer…

Creating column-level annotations on views

While updating my slides covering “what’s new in Oracle AI Database 26ai” I noticed that examples how to annotate views are currently absent from the SQL Language Reference. While this is getting fixed, here’s a short post how to use annotations with Oracle views. Schema Annotations Schema Annotations are a pretty nice feature, especially in…

Using the MLE PL/SQL Foreign Function Interface in APEX

While preparing a talk for the upcoming annual German Oracle User Group conference, DOAG 2025, I noticed I haven’t yet written anything about the using the MLE PL/SQL Foreign Function Interface (or FFI for short) in APEX. The PL/SQL FFI was introduced in Oracle 23.7 to simplify the way developers (you!) work with PL/SQL. Rather…

Passing JSON PL/SQL types to MLE JavaScript

Recently the MLE team was asked if it was possible to pass JSON PL/SQL types to MLE/JavaScript.Remember that you have multiple options to work with JSON in Oracle Database 26ai: SQL (using the JSON data type), PL/SQL (using the PL/SQL API), JavaScript (did you know that the J in JSON stands for JavaScript?), etc. Shout…

Something went wrong. Please refresh the page and/or try again.