Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie generiert man eine dynamische Order by-Klausel in einer PL/SQL-Prozedur?

Bei einer dynamischen Sortierung empfehle ich die Verwendung von separat Klauseln:

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)

Dies garantiert, dass Sie kein unerwartetes Problem mit der Typkonvertierung haben, wenn die Spalten unterschiedliche Typen haben. Beachten Sie diesen case gibt NULL zurück ohne else Klausel.