ORDER BY
CASE WHEN p_sort_by = 'COLUMN1' AND NVL(p_desc, 0) = 0 THEN column1 END ASC,
CASE WHEN p_sort_by = 'COLUMN1' AND p_desc = 1 THEN column1 END DESC,
CASE WHEN p_sort_by = 'COLUMN2' AND NVL(p_desc, 0) = 0 THEN column2 END ASC,
CASE WHEN p_sort_by = 'COLUMN2' AND p_desc = 1 THEN column2 END DESC,
CASE WHEN p_sort_by = 'COLUMN3' AND NVL(p_desc, 0) = 0 THEN column3 END ASC,
CASE WHEN p_sort_by = 'COLUMN3' AND p_desc = 1 THEN column3 END DESC,
CASE WHEN p_sort_by = 'COLUMN4' AND NVL(p_desc, 0) = 0 THEN column4 END ASC,
CASE WHEN p_sort_by = 'COLUMN4' AND p_desc = 1 THEN column4 END DESC
2条答案
按热度按时间qxsslcnc1#
在
ORDER BY
子句中使用CASE
表达式将所有组合列入白名单。当条件不匹配时,CASE
表达式将返回NULL
,并且所有行将对未匹配的CASE
表达式具有相同的顺序,因此只有匹配的CASE
表达式才会对顺序产生影响。字符串
5fjcxozz2#
如果它必须是 dynamic 的,也许一个返回ref cursor的函数会有所帮助。
函数编写
SELECT
语句,并将参数的 * 占位符 * 替换为传递给函数的值。字符串
让我们尝试一下:按
ename
升序排序结果:型
按
ename
降序排序:型
按
job
升序排序:型