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

Come generare Dynamic Order by clausola nella procedura PL/SQL?

Quando si esegue un ordinamento dinamico, consiglio di utilizzare separato clausole:

order by (case when in_sort_column = 'col1' then col1 end),
         (case when in_sort_column = 'col2' then col2 end),
         (case when in_sort_column = 'col3' then col3 end)

Ciò garantisce che non si verificheranno problemi imprevisti con la conversione del tipo, se le colonne sono di tipo diverso. Nota che case restituisce NULL senza un else clausola.