Powered by
WordPress
  • 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…

  • Git clone, but a specific branch, please

    This is a super quick post mainly to remind myself that it is possible to (git) clone a specific branch, rather than the default branch. And it’s actually quite simple to do so. As per git-clone (1), the command: So, as expected, the repository is now present on disk. What about these branches? The current…

  • 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…

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

    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…