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

Show last authors
1 Starshiy, 12:14
2 ABM_UTIL.GET_ORACLE_VERSION; реализована через v$version и на современных версиях Oracle (>=19) возвращает ошибку no_data_found.
3 Но тут эта ошибка была не видна, потому что при вызове из запроса (например табличной функции) это исключение интерпретируется как NULL. При расчёте остатков это выглядит как пустой набор данных
4
5 Правильная реализация функции, пригодная для любой версии Oracle:
6
7 (% style="font-size: 14px; font-family: Consolas; background-color:#fbfdff" %)
8 function get_oracle_version return number is
9
10 (% style="font-size: 14px; font-family: Consolas; background-color:#fbfdff" %)
11 begin
12 return dbms_db_version.version;
13 end
14
15 (% style="font-size: 14px; font-family: Consolas; background-color:#fbfdff" %)
16 get_oracle_version;
17
18 Также нужно проинвентаризировать код на предмет if vOracleVersion=11 then
19
20 Теперь условие должно быть >=11
21
22 Писалось это давно и имелось в виду , что иначе 10.
23 Например, так исправили un$sold.make на ergolemn
24 Обе эти проблемы могут быть причиной скрытых ошибок у других заказчиков на версиях >=19
25