Mam problem, kiedy próbuję skompilować mój projekt w bazie danych Oracle. Aby było prostsze, mam trzy obiekty: 2 pakiety (UTILS i TYPY) i 1 widok (VIEW).Pętla zależności obiektu Oracle
Pakiet UTILS używa typów zdefiniowanych w TYPACH paczki. Pakiet TYPES używa VIEW jako podstawy dla jednego z typów. A VIEW używa funkcji z pakietu UTILS w swoim skrypcie. Kiedy próbuję wprowadzić zmiany w jednym z tych obiektów, nie mogę skompilować, ponieważ wszystko jest w nieprawidłowym stanie. Powstaje więc pewna pętla zależności obiektów.
Proszę, pomóż mi rozwiązać ten problem.
Na przykład, czy mimo to istnieje potrzeba skompilowania poniższego kodu? Każdy obiekt jest indywidualnie poprawny pod względem składni, ale jak można je wszystkie zestawiać razem?
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';
Przerwać cykl? Spraw, aby wykonywanie funkcji było uruchomione (zamiast pieczenia w zapytaniu) - np: WYKONUJ funkcję z ciągu znaków. –
Zerwanie pętli jest jedynym wyjściem z tego problemu? Pomyślałem, że podczas kompilowania pakietu/widoku może istnieć jakiś król wskazówka, aby zignorować nieprawidłowy stan jego zależności. – artbro
Nie mam pojęcia - będziesz chciał, aby jakiś oracle wiedział wszystko :-) Bardziej zaznajomię się z Postgres i tak bym to zrobił. (nie cierpi z tego * dokładnego * problemu, ale nadal możesz tworzyć pętle zależności). –