आपको यह इसलिए मिलता है क्योंकि आपका कोड आउटपुट प्रकार को एक स्केलर प्रदान करता है। असाइनमेंट लक्ष्य से मेल खाने के लिए आपको वेरिएबल डालना होगा। तो:
SELECT type_struct(counter)
INTO rec
FROM dual;
आपको आवश्यक रूप से एक पाइपलाइन फ़ंक्शन की आवश्यकता नहीं है। हम table()
. का उपयोग कर सकते हैं किसी भी फ़ंक्शन के साथ जो संग्रह लौटाता है।
यहां एक बहुत ही सरल कार्यान्वयन है, जिसके लिए केवल एक यूडीटी की आवश्यकता है।
CREATE TYPE tp_numbers AS TABLE OF number;
/
CREATE OR REPLACE FUNCTION gen_nums (na NUMBER, nb NUMBER)
RETURN tp_numbers
IS
return_value tp_numbers ;
BEGIN
SELECT (na + level) - 1
bulk collect INTO return_value
FROM dual
connect by level <= nb;
RETURN return_value ;
END gen_nums;
/