レコードタイプ、コレクション/テーブルタイプ、および関数をすべて同じパッケージ内で宣言しています。
関数を呼び出すときは、そのパッケージから同じタイプを使用する必要があります。
しかし、そうではありません。フィールドとデータ型の構造は同じですが、Oracleに関する限り同じではありません。オラクルはそれを正確に知る必要があります 同じタイプが使用されていますが、その理由の1つは、オブジェクト間の依存関係を追跡できるようにするためです。
匿名ブロックは、独自の(類似しているが競合する)タイプを宣言するのではなく、パッケージタイプを参照する必要があります:
DECLARE
managers hr_package.managers_table_type;
BEGIN
managers := hr_package.managers_multiple_departments;
END;
ボーナスとして、タイピングがはるかに少なくて済み、重複するタイプを管理する必要がないことを意味します。
ただし、型宣言はパッケージ仕様に含まれている必要があることも意味します。もちろん、これは、一般に公開したいものすべてに当てはまります。