Markus - the error text you set for the process is displayed only if the process itself fails. If you handle errors within it, the process succeeds and you get the success message.
I'd be interested to hear what others are doing, but we have done this kind of thing:
Create a hidden page item, e.g. P1_MESSAGE.
Set the value of that item from within your PL/SQL process, e.g:
...
exception
when others then
:P1_MESSAGE := 'Error text here';
end;
The set the success text to &P1_MESSAGE. (with the trailing full stop).
Does that do what you want?
John.