Поскольку у вас есть переменные подстановки, у вас, очевидно, есть некоторый основной язык.Таким образом, один из подходов состоит в том, чтобы упорядочить три значения на главном языке перед вызовом запроса SQL.
Другой подход заключается в использовании следующего запроса (например, в сочетании с предложением WITH):
select
least(:var1, :var2, :var3) as least_var,
case
when :var2 < :var1 and :var1 < :var3
or :var2 > :var1 and :var1 > :var3 then :var1
when :var1 < :var2 and :var2 < :var3
or :var1 > :var2 and :var2 > :var3 then :var2
else :var3
end as greater_var,
greatest(:var1, :var2, :var3) as greatest_var
from dual
Создание предложенной вами функции SORT не будет работать, так как функция не может вернуть конструкцию, которая служит тремя столбцами.Если вы хотите использовать функции, используйте три из них: встроенные функции LEAST и GREATEST, а также пользовательские функции GREATER.