Oracle VM Consulting
view counter


Oracle Application Express (APEX) resources, news, and support articles.

Working with multiple browser tabs

When I develop APEX applications I use several browser tabs to navigate between the executed application and the application builder. There is one side affect which drives me crazy sometimes.

TAB 1: Executed application
TAB 2: Application Builder

How do I work?
I edit an item inside the application builder (for example the LOV select statement) and click on save. I immediately change the TAB and press F5 to update the application.

What drives me crazy?

Working with XML files and APEX - Part 2: Selecting data from XMLType

After we successfully imported XML files into our APEX application. It's time to start to analyze them.

We still assume that this is our example XML file:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

SG Dynamo Dresden

APEX Listener and Excel Upload

If you are using APEX Listener version 2.0, you can download a sample application here. In this application I am showing how to:

1. create an excel upload page
2. manage multiple excel sheets after upload

This new APEX Listener feature is great and I hope they will extend it to the other excel file formats - currently it works for .xls only. If you are using APEX 4.2.3 this will probably not work since there is a bug in that version of APEX.

New beta version of the APEX Blog-aggregator is online

Check out the updated blog aggregator on

Finally some major usability extensions were integrated. Looks like APEX to me.

  - You can search the blog posts at least back into the year 2008.
  - Watch the last 100 posts
  - No more problems with duplicated posts or tweets
  - Seems really fast to me

Update an APEX tree dynamically

I was asked by an APEX developer if it is possible to dynamically update an APEX tree by changing an APEX item.

Example select:

select case when connect_by_isleaf = 1 then 0 when level = 1 then 1 else -1 end as status,
ENAME as title
NULL as icon,
EMPNO as value,
ENAME as tooltip,
NULL as link
from EMP
where EMPNO != :P1_EMPNO
start with MGR is null
connect by prior EMPNO = MGR
order siblings by ENAME

Working with XML files and APEX - Part 1: Upload

Working with Oracle and XML can be a pain in the ass especially at the beginning when you don't know the hidden secrets. :) That's why I want to give some major hints how to integrate XML files in APEX applications.

This time I will provide an easy way how to upload a file into a table with a XMLType column.

Let's assume that this is our example XML file:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>


Switching from Windows to Mac

A year ago I bought a Macbook Pro and tried to develope APEX applications with it successfully.
You may ask yourself why? I just want to stay "up to date" and work with the best technique on the market. A couple of colleagues mentioned the performance is better with Mac. Reason enough for me to check it out.

I never needed many special developer tools to build APEX applications in Windows:

Upgrading the JasperReports libraries to 5.2.0

Would you like to upgrade your existing JasperReportsIntegration with the 5.2.0 libraries of JasperReports?

As of now this already seems to be not the most current version, JasperReports has already moved on to 5.5.0. But since I have already created the 5.2.0 package a while ago, I might just post the instructions here. The 5.5.0 version will follow.

Here you go ...

APEX sei ein langsames Tool

Nachdem ich den Blogpost von Joel Kallman gelesen habe, dachte ich mir ein paar eigene Erfahrungen zum Thema APEX und Performance beizutragen.

Die Aussage APEX sei ein langsames inperformantes Tool, ist einfach nur FALSCH!
Wenn jemand ein Auto mit angezogener Handbremse fährt, dann liegt die langsame Geschwindigkeit nicht am Auto sondern am Fahrer.

Example using the analytical function: LAG

I'm actually a big fan of using analytical functions instead of using SUB-Selects or custom PL/SQL functions.

The reason is quite simple: 
You save a lot of SQL executing time.

Another positive side is: 
The amount of code lines is also less then the other two solutions would need.

Negativ aspect:
You need to understand the logic behind analytical functions and you need to practice with them. :)

What was my problem?

view counter