Oracle
 sql >> Database >  >> RDS >> Oracle

Restituzione di una "tabella" (senza predefinire i nomi delle colonne) da una funzione PL/SQL

Lo farei fortemente sospetta che tu non voglia farlo. La creazione dinamica di tipi di oggetti e la creazione di questo tipo di flessibilità in PL/SQL è quasi sempre una ricetta per la rovina. Finirai per scrivere ovunque un SQL dinamico estremamente complicato (sia nei chiamanti che nelle tue funzioni) che renderà il tuo codice molto, molto più difficile da leggere ed eseguire il debug. Quando il tuo codice diventa così complesso, è meglio scrivere framework che generano il codice, ma questo ti lascia con il problema molto, molto più difficile di scrivere codice che genera codice che risolve il tuo problema piuttosto che scrivere semplicemente codice che risolve il tuo problema.

Detto questo, se sei veramente, veramente determinato, è possibile creare un funzione di tabella pipeline completamente generica . Ciò comporta una magia profonda e profonda utilizzando il framework Oracle Data Cartridge. È abbastanza bello. Ma il numero di persone che potrebbero realisticamente supportare ed estendere questo tipo di codice è molto piccolo.

Con un po' meno di magia (ma comunque molto, molto più di quanto suggerirei per qualsiasi organizzazione), puoi creare un funzione tabella pipeline flessibile che si basa sulla restituzione di tipi da una gerarchia di tipi predefinita. È più probabile che sia sopportabile, ma presuppone che tu possa costruire la tua gerarchia di tipi in anticipo.