我需要对替换变量进行排序,以便稍后可以像这样引用它们:
WITH
vars AS (SELECT SORT(:var1,:var2, :var3) FROM DUAL)
SELECT least_var, greater_var, greatest_var FROM vars;
答案 0 :(得分:2)
由于你有替换变量,你显然有一些宿主语言。因此,一种方法是在调用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的用户定义函数。