我们如何在 select 语句中使用动态
ASC
或 DESC
传递动态列名称,如下例所示:
SELECT emp_name, emp_id
FROM employee
ORDER BY (CASE WHEN :p_asc='asc' THEN :p_column_name END) ASC,
(CASE WHEN :p_asc='asc' THEN :p_column_name END) DESC;
此查询不起作用 - 不接受列名称 - 请帮助实现此目的。
嗯,这取决于您使用的工具。 SQL*Plus 可以让您做到这一点。例子如下:
SQL> set ver off
SQL>
SQL> accept p_col prompt "Enter column name for sorting purposes: "
Enter column name for sorting purposes: ename
SQL> accept p_asc_desc prompt "Asc or Desc? "
Asc or Desc? desc
SQL>
SQL> select ename from emp order by &p_col &p_asc_desc;
ENAME
----------
WARD
TURNER
SMITH
SCOTT
MILLER
MARTIN
KING
JONES
JAMES
FORD
CLARK
BLAKE
ALLEN
ADAMS
14 rows selected.
SQL>
对;行按
ENAME
列以 DESC
结束顺序排序。