There can be multiple causes what can be wrong with an On-Demand Process. When you read the documentation you will notice that
Any failures of authentication, authorization, or process conditions do not result in visible error messages or other indicators of such failures and most often result in a blank page being displayed.
This also includes errors when the PL/SQL code of your On-Demand Process doesn’t compile or when you specify a wrong process name. This is because of security concerns as Scott Spadafore confirmed in a recent posting.
So what to do if APEX doesn’t tell us anything?
You first have to figure out where the problem of your On-Demand Process is.
- Has a wrong process name be specified?
- Does it raise an exception which causes a blank page?
- Does the PL/SQL code not compile?
Use the following syntax to call it:
- application_id is the application ID or alphanumeric alias
- session is the session ID (run your application and get it from the URL)
- APPLICATION_PROCESS=process_name is the keyword APPLICATION_PROCESS= followed by either the process ID or an alphanumeric name of an application-level process having a Process Point of On Demand
- item-names are a list of application- or page item names which you want to set. They are seperated by a comma
- item-values are a list of values corresponding to the item-names, also separated by a comma.
An example URL would be
The best way to get the correct process name is to copy-paste it from the process definition. It wouldn’t be the first time that there is a type. 🙂
Didn’t work? The next step is to replace the existing PL/SQL code of the On-Demand Process with just the following code, to make sure that the call works at least.
Didn’t work, too? Then I have no clue neither what to do next in such a case. Check again the URL and process name if they are ok.
If you got the “Hallo world” then it seems that your PL/SQL code is raising an exception or the PL/SQL code is syntactically wrong.
To handle the first possibility add an exception handler around your code, to show us the exception which is raised by Oracle.
BEGIN [...Here comes your existing code...] EXCEPTION WHEN OTHERS THEN HTP.p('Error: '||SQLERRM); END;
Does it show an error message? With this error message you should have a hint what’s going wrong in your code. If not, add some HTP.P calls for debugging purpose to your code.
If it still doesn’t show an error message, than it seems that your PL/SQL code is syntactically wrong. Have you already tried to run/compile the code stand alone in SQL*Plus/Toad/SQL Developer?