Переменные подстановки сортировки Oracle - PullRequest
3 голосов
/ 02 сентября 2011

Мне нужно отсортировать переменные подстановки, чтобы я мог ссылаться на них позже так:

WITH  
vars AS (SELECT SORT(:var1,:var2, :var3) FROM DUAL)  
SELECT least_var, greater_var, greatest_var FROM vars;

1 Ответ

2 голосов
/ 02 сентября 2011

Поскольку у вас есть переменные подстановки, у вас, очевидно, есть некоторый основной язык.Таким образом, один из подходов состоит в том, чтобы упорядочить три значения на главном языке перед вызовом запроса 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...