How Can I Make Oracle Query Sort Order Dynamic?

后端 未结 3 2054
你的背包
你的背包 2021-01-23 17:23

I have a Oracle procedure inside a package like this

PROCEDURE getEmployee
(
  pinLanguage               IN    VARCHAR2,
  pinPage                   IN    NUMBER         


        
3条回答
  •  無奈伤痛
    2021-01-23 18:07

    You can avoid all these duplicated cases. Multiply row number by -1 when descending order is required:

    order by 
        case pinSortOrder when 'desc' then -1 else 1 end * 
        row_number() over (
          order by case pinSortColumn when 'FullName'    then full_name     end, 
                   case pinSortColumn when 'Gender'      then gender        end, 
                   case pinSortColumn when 'DateOfBirth' then date_of_birth end)  
    

    dbfiddle demo

    Also this way you do not have to convert data the same type, no need to use to_char.

提交回复
热议问题