У меня проблема, когда я пытаюсь скомпилировать свой проект в Oracle Database. Чтобы сделать его более простым, у меня есть три объекта: 2 пакета (UTILS и TYPES) и 1 вид (VIEW).
Пакет UTILS использует типы, определенные в TYPES пакета. Пакет TYPES использует VIEW в качестве основы для одного из его типов. И VIEW использует функции из пакета UTILS в нем script. Когда я пытаюсь внести некоторые изменения в один из этих объектов, я не могу скомпилировать, потому что все в недопустимом состоянии. Таким образом создается какой-то цикл зависимостей объектов.
Пожалуйста, помогите мне решить эту проблему.
Например, есть ли способ компилировать приведенный ниже код? Каждый объект индивидуально синтаксически корректен, но как все они могут быть скомпилированы вместе?
create or replace package my_types is
type type1 is table of number;
type type2 is table of my_view%rowtype;
end;
/
create or replace package my_utils is
function get_1 return number;
procedure do_something(parameter my_types.type2);
end;
/
create or replace package body my_utils is
function get_1 return number is
begin
return 1;
end;
procedure do_something(parameter my_types.type2) is
begin
null;
end;
end;
/
create or replace force view my_view as
select * from dual
where 1 = my_utils.get_1();
exec dbms_utility.compile_schema(user, false);
select object_name from user_objects where status <> 'VALID';