Saya akan sangat curiga bahwa Anda tidak ingin melakukan ini. Membuat tipe objek secara dinamis dan membangun fleksibilitas semacam ini di PL/SQL hampir selalu merupakan resep kehancuran. Anda akhirnya akan menulis SQL dinamis yang sangat rumit di mana-mana (baik di pemanggil dan di fungsi Anda) yang akan membuat kode Anda jauh, jauh lebih sulit untuk dibaca dan di-debug. Ketika kode Anda menjadi sekompleks itu, Anda lebih baik menulis kerangka kerja yang menghasilkan kode tetapi itu membuat Anda menghadapi masalah yang jauh lebih sulit dalam menulis kode yang menghasilkan kode yang memecahkan masalah Anda daripada hanya menulis kode yang memecahkan masalah Anda.
Yang mengatakan, jika Anda benar-benar bertekad, adalah mungkin untuk membangun fungsi tabel pipelined sepenuhnya generik . Itu melibatkan beberapa sihir yang mendalam dan mendalam menggunakan kerangka Oracle Data Cartridge. Ini cukup keren. Tetapi jumlah orang yang secara realistis dapat mendukung dan memperluas kode semacam ini sangat sedikit.
Dengan sihir yang sedikit lebih sedikit (tapi tetap saja, jauh lebih banyak daripada yang saya sarankan untuk hampir semua organisasi), Anda dapat membangun fungsi tabel pipa fleksibel yang bergantung pada pengembalian tipe dari hierarki tipe yang telah ditentukan sebelumnya. Itu lebih mungkin untuk didukung tetapi mengasumsikan bahwa Anda dapat membangun hierarki tipe Anda di depan.