Обновление и миграция на Oracle 21
Starshiy, 12:14
ABM_UTIL.GET_ORACLE_VERSION; реализована через v$version и на современных версиях Oracle (>=19) возвращает ошибку no_data_found.
Но тут эта ошибка была не видна, потому что при вызове из запроса (например табличной функции) это исключение интерпретируется как NULL. При расчёте остатков это выглядит как пустой набор данных
Правильная реализация функции, пригодная для любой версии Oracle:
function get_oracle_version return number is
begin
return dbms_db_version.version;
end
get_oracle_version;
Также нужно проинвентаризировать код на предмет if vOracleVersion=11 then
Теперь условие должно быть >=11
Писалось это давно и имелось в виду , что иначе 10.
Например, так исправили un$sold.make на ergolemn
Обе эти проблемы могут быть причиной скрытых ошибок у других заказчиков на версиях >=19