Du erklærer posttypen, samlingen/tabeltypen og funktionen i den samme pakke.
Når du kalder funktionen skal du bruge samme type fra den pakke.
Men det er det ikke. Det har samme struktur - felter og datatyper - men er ikke det samme, hvad Oracle angår. Oracle skal vide det præcis den samme type bliver brugt, dels for at den kan holde styr på afhængigheder mellem objekter.
Din anonyme blokering skal referere til pakketyperne i stedet for at erklære sin egen - lignende, men modstridende - type(r):
DECLARE
managers hr_package.managers_table_type;
BEGIN
managers := hr_package.managers_multiple_departments;
END;
Som en bonus involverer det meget mindre indtastning og betyder, at du ikke behøver at administrere duplikerede typer.
Det betyder dog også, at typeerklæringerne skal være i pakkespecifikationen - hvilket selvfølgelig er tilfældet for alt, hvad du ønsker skal være offentligt synligt.