आप एक ही पैकेज में रिकॉर्ड प्रकार, संग्रह/तालिका प्रकार और कार्य घोषित कर रहे हैं।
जब आप फ़ंक्शन को कॉल करते हैं तो आपको उस पैकेज से उसी प्रकार का उपयोग करना होता है।
लेकिन ऐसा नहीं है। इसकी संरचना समान है - फ़ील्ड और डेटाटाइप - लेकिन जहाँ तक Oracle का संबंध है वैसा नहीं है। Oracle को यह जानना आवश्यक है कि बिल्कुल उसी प्रकार का उपयोग किया जा रहा है, आंशिक रूप से ताकि यह वस्तुओं के बीच निर्भरता का ट्रैक रख सके।
आपके अनाम ब्लॉक को अपने स्वयं के - समान लेकिन परस्पर विरोधी - प्रकार (प्रकारों) को घोषित करने के बजाय पैकेज प्रकारों को संदर्भित करने की आवश्यकता है:
DECLARE
managers hr_package.managers_table_type;
BEGIN
managers := hr_package.managers_multiple_departments;
END;
एक बोनस के रूप में इसमें बहुत कम टाइपिंग शामिल है, और इसका मतलब है कि आपको डुप्लिकेट प्रकारों को प्रबंधित करने की आवश्यकता नहीं है।
हालांकि, इसका मतलब यह भी है कि प्रकार की घोषणाएं पैकेज विनिर्देश में होनी चाहिए - जो कि किसी भी चीज के मामले में है जिसे आप सार्वजनिक रूप से दिखाना चाहते हैं।