Using APEX_ERROR to manage custom error messages
Von Tobias Arnhold →
1.18.2017
Sometimes you just feel like you would be a newbie in coding business applications. Luckily it doesn't happen so often anymore. But this time it hit me hard. :)
During an application upgrade on Universal Theme I discovered an ugly workaround to create custom error messages I used in that time.
The old code looked like that:
Anyway on Universal Theme it looked not so nice anymore because a "success message" has always a green background color. Putting some red text color above is not the user experience I would prefer.
I searched for about 3 minutes and found a really good article from Jorge Rimblas writing about the APEX_ERROR package. The blog post is from 2013 so this procedure must be available for a while now. What made me feeling like a jerk. The good side is that I now can start again to climb up on the iron throne. :)
The updated code looked like that:
Thanks Jorges by blogging and sharing your knowledge.
During an application upgrade on Universal Theme I discovered an ugly workaround to create custom error messages I used in that time.
The old code looked like that:
declare retval number; p_cust_id number; p_status varchar2(30); p_upduser varchar2(10); begin p_cust_id := :p1_cust_id; p_status := 0; p_upduser := :app_user; retval := cust_apex_pkg.cust_apex_fnc ( p_cust_id, p_status, p_upduser ); if retval = 1 then apex_application.g_print_success_message := '<span style="color: green;">Order was successfully published.</span>'; elsif retval = 2 then apex_application.g_print_success_message := '<span style="color: red;">Error: Custom error 1 occurred.</span>'; elsif retval = 3 then apex_application.g_print_success_message := '<span style="color: red;">Error: Custom error 2 occurred.</span>'; else apex_application.g_print_success_message := '<span style="color: red;">Error: Unknown error occurred.</span>'; end if; commit; end;As you can see I used the apex_application.g_print_success_message to overwrite the text color. Quite ugly but it worked as expected.
Anyway on Universal Theme it looked not so nice anymore because a "success message" has always a green background color. Putting some red text color above is not the user experience I would prefer.
I searched for about 3 minutes and found a really good article from Jorge Rimblas writing about the APEX_ERROR package. The blog post is from 2013 so this procedure must be available for a while now. What made me feeling like a jerk. The good side is that I now can start again to climb up on the iron throne. :)
The updated code looked like that:
declare retval number; p_cust_id number; p_status varchar2(30); p_upduser varchar2(10); begin p_cust_id := :p1_cust_id; p_status := 0; p_upduser := :app_user; retval := cust_apex_pkg.cust_apex_fnc ( p_cust_id, p_status, p_upduser ); if retval = 1 then apex_application.g_print_success_message := 'Order was successfully published.'; elsif retval = 2 then apex_error.add_error( p_message => 'Error: Custom error 1 occurred.' , p_display_location => apex_error.c_inline_in_notification ); elsif retval = 3 then apex_error.add_error( p_message => 'Error: Custom error 2 occurred.' , p_display_location => apex_error.c_inline_in_notification ); else apex_error.add_error( p_message => 'Error: Unknown error occurred.' , p_display_location => apex_error.c_inline_in_notification ); end if; commit; end;
Thanks Jorges by blogging and sharing your knowledge.