Фактические ошибки можно получить, считав их из одного из представлений * _ERRORS, например, USER_ERRORS для объектов в схеме вошедшего в систему пользователя, ALL_ERRORS для ошибок, связанных с объектами, которые могут быть прочитаны текущим пользователем, илиDBA_ERRORS для ошибок, связанных со всеми объектами в базе данных.
Вы можете прочитать их, используя SELECT, например:
SELECT *
FROM USER_ERRORS
WHERE NAME = 'TOTALCREDIT'
Имейте в виду, что Oracle использует UPPER-CASE для всех объектов схемыесли они явно не указаны в кавычках, поэтому при запросе этих представлений вам нужно указать версию имени UPPER-CASE.
Документация здесь
В случаеиз вашей функции мне кажется, что проблема в том, что строка
total number(100) := 0;
Oracle поддерживает только точность до 38 цифр.Я предлагаю вам изменить это значение на
total number := 0;
и посмотреть, как это работает для вас.
Удачи.