Bạn đang khai báo loại bản ghi, bộ sưu tập / loại bảng và tất cả chức năng trong cùng một gói.
Khi bạn gọi hàm, bạn phải sử dụng cùng loại, từ gói đó.
Nhưng nó không phải. Nó có cấu trúc giống nhau - các trường và kiểu dữ liệu - nhưng không giống với những gì Oracle liên quan. Oracle cần biết rằng chính xác cùng một kiểu đang được sử dụng, một phần để nó có thể theo dõi sự phụ thuộc giữa các đối tượng.
Khối ẩn danh của bạn cần tham chiếu đến các loại gói, thay vì khai báo (các) loại - tương tự nhưng xung đột của riêng nó:
DECLARE
managers hr_package.managers_table_type;
BEGIN
managers := hr_package.managers_multiple_departments;
END;
Như một phần thưởng, nó liên quan đến việc nhập ít hơn nhiều và có nghĩa là bạn không phải quản lý các loại trùng lặp.
Tuy nhiên, điều đó cũng có nghĩa là các khai báo kiểu phải nằm trong đặc tả gói - tất nhiên là trường hợp của bất kỳ thứ gì bạn muốn hiển thị công khai.