आपकी समस्या वास्तव में ORA-22905 के बजाय PLS-00642 त्रुटि है। अनिवार्य रूप से आप SQL कथनों में स्थानीय संग्रह प्रकारों का उपयोग नहीं कर सकते हैं। इसलिए समाधान, स्कीमा स्तर पर अपने प्रकारों को परिभाषित करना है। इस तरह से प्रकारों को परिभाषित करते समय, हम %TYPE सिंटैक्स का उपयोग नहीं कर सकते हैं, और इसके बजाय कॉलम को स्पष्ट रूप से परिभाषित करना चाहिए (ओरेकल में एक प्रकार बनाते समय PLS-00201 त्रुटि प्राप्त करना ) यानी
create or replace type rec_type as object (
COLUMN_1 integer,
COLUMN_2 varchar2(128)
);
create or replace type tab_type as table of rec_type;
फिर आपको यहां बताए अनुसार थोक संग्रह करने के लिए मानों को प्रासंगिक प्रकार में स्पष्ट रूप से परिवर्तित करने की आवश्यकता है:ORA-00947 विश्व स्तर पर प्रकार घोषित करते समय पर्याप्त मान नहीं हैं .
इसलिए आपकी प्रक्रिया कुछ इस तरह दिखेगी:
PROCEDURE MYPROC((PARAMS))AS
TABLE_1 TAB_TYPE;
lCount integer;
BEGIN
SELECT REC_TYPE(COLUMN_A, COLUMN_B)
BULK COLLECT INTO TABLE_1
FROM TABLE_A;
SELECT COUNT(*) INTO lCount FROM TABLE(TABLE_1);
END MYPROC;