Quantcast
Channel: APEX-AT-WORK by Tobias Arnhold
Viewing all articles
Browse latest Browse all 177

Using APEX_ERROR to manage custom error messages

$
0
0
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:
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.

Viewing all articles
Browse latest Browse all 177

Trending Articles