Du deklarerar posttyp, samling/tabelltyp och funktion inom samma paket.
När du anropar funktionen måste du använda samma typ, från det paketet.
Men det är det inte. Den har samma struktur - fält och datatyper - men är inte densamma när det gäller Oracle. Oracle måste veta det exakt samma typ används, delvis för att den ska kunna hålla reda på beroenden mellan objekt.
Ditt anonyma block måste referera till pakettyperna, snarare än att deklarera sina egna - liknande men motstridiga - typ(er):
DECLARE
managers hr_package.managers_table_type;
BEGIN
managers := hr_package.managers_multiple_departments;
END;
Som en bonus innebär det mycket mindre skrivning och innebär att du inte behöver hantera dubbletter.
Det betyder dock också att typdeklarationerna måste finnas i paketspecifikationen - vilket är fallet för allt du vill ska vara offentligt synligt, naturligtvis.