Practical Pl/Sql: Explorations In Oracle Pl/Sql programming.

  • Incremental Rounding: Numbers

    A look at using pl/sql to create user defined functions and sql macros for incremental rounding.

    read more

  • WITH Function Macros

    Use sql macros as functions in the WITH clause to easily prototype macros.

    read more

  • Table Data Comparison: Column Differences

    Using sql table macros to make finding row and column differences simple.

    read more

  • VirtualBox23ai QuickStart for OML4PY

    Are you excited about the new AI Vector Search in Oracle 23ai! Have you been able to do a vector search in the new database without calling external APIs to do vector embeddings? Unless you are skilled in Python and Linux, this could take a while to get to the point where you can load…

    read more

  • Dynamic Unpivot Using JSON_DATAGUIDE

    In this post I will explore a way to generate and run unpivot queries dynamically in PL/SQL. We will build a utility package to dynamically create unpivot queries using json and leveraging json_dataguide to create json_table and unpivot sql expressions.

    read more

  • Table Data Comparison: Row Differences

    A common task that database developers encounter is comparing data between two different sources to see rows with differences. This can be a table that is loaded with new data that needs to be compared with existing rows to see what rows need to be loaded. If we rewrite an existing view, the output of…

    read more

  • Cursor Basics: Cursor Iteration Controls

    In the previous post we discussed the use of bulk collect and limit to optimize cursor iteration. This gave us a way to see the undocumented bulk prefetch optimization that has been applied behind the scenes to the cursor for loop. Unless there are gains to be made from tuning a bulk collect limit, the…

    read more

  • Cursor Basics: Bulk Binds

    In the previous post we discussed the most basic approaches to iterating through a resultset using cursors. Since those approaches traverse the cursor one row at a time they are often referred to as slow by slow processing. This slowness turns out to be the cost of switching between the PL/SQL engine and the SQL…

    read more

  • Cursor Basics: A Fetching Difference

    There are some techniques that are really basic to what we do everyday as PL/SQL developers. There is a tendency to automatically do these basic things in the same way without considering the alternatives that the particular situation might merit. In this post and the next we will explore one of these basic techniques in…

    read more

  • Getting Started For Free

    Because the intended audience for this blog is anyone that works with or wants to work with Oracle PL/SQL, from the advanced expert to the beginner, I want to take a moment before things get technical to go over some tools that are as important to database development as pots and pans are for cooking.…

    read more

Got any topic recommendations or feedback?