【发布时间】:2015-03-13 23:39:18
【问题描述】:
我正在尝试编写一个 PL/SQL 过程,该过程将使用 SQL 查询来获取结果。但要求是 order by 可以是动态的,主要用于对屏幕中的列进行排序。我将 2 个参数传递给此过程 - in_sort_column 和 in_sort_order。 要求是在文本列上排序是 ASC,对于数字是 DESC。 我的查询看起来像这样,没有添加 in_sort_order -
SELECT col1, col2, col3 from tabl e1 where col1 > 1000
ORDER BY decode(in_sort_column,'col1', col1, 'col2', col2, 'col3', col3);
在这种情况下,我无法弄清楚如何使用 in_sort_order 参数。之前做过这件事的人可以帮忙吗?
谢谢
【问题讨论】:
-
如果 in_sort_order 参数是由您已经知道的数据类型决定的,为什么还需要它?
-
我刚刚添加了参数,因为当我尝试使用这样的查询时 - SELECT col1, col2, col3 from table e1 where col1 > 1000 ORDER BY decode(in_sort_column,'col1', col1 desc, ' col2',col2 asc,'col3',col3 asc); ...这不起作用
-
为了使其简单而冗长,请使用 case 表达式按顺序排列。看stackoverflow.com/a/26033176/3989608