Deklarujesz typ rekordu, typ kolekcji/tabeli i funkcje w tym samym pakiecie.
Kiedy wywołujesz funkcję, musisz użyć tego samego typu, z tego pakietu.
Ale tak nie jest. Ma taką samą strukturę - pola i typy danych - ale nie jest taka sama, jeśli chodzi o Oracle. Oracle musi to wiedzieć dokładnie używany jest ten sam typ, częściowo po to, aby śledzić zależności między obiektami.
Twój anonimowy blok musi odnosić się do typów pakietów, zamiast deklarować własne - podobne, ale sprzeczne - typy:
DECLARE
managers hr_package.managers_table_type;
BEGIN
managers := hr_package.managers_multiple_departments;
END;
Jako bonus wymaga znacznie mniej pisania i oznacza, że nie musisz zarządzać zduplikowanymi typami.
Oznacza to jednak również, że deklaracje typu muszą znajdować się w specyfikacji pakietu - co oczywiście ma miejsce w przypadku wszystkiego, co ma być publicznie widoczne.