Обновление и миграция на Oracle 21

Last modified by Nefedenkova Viktoria on 2023/03/16 19:51

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