在 Oracle Sql 中使用动态 asc 或 desc 传递动态列名称

问题描述 投票:0回答:1

我们如何在 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 oracle sql-order-by
1个回答
0
投票

嗯,这取决于您使用的工具。 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
结束顺序排序。

© www.soinside.com 2019 - 2024. All rights reserved.