【问题标题】:Is it possible to pass parameter as keyword in Oracle SQL? [duplicate]是否可以在 Oracle SQL 中将参数作为关键字传递? [复制]
【发布时间】:2021-04-11 19:43:21
【问题描述】:

在 Oracle 19c 中,是否可以这样做:

select * from my_table
order by my_col :dir

其中:dirASCDESC。我知道我可以使用案例,但我正在寻找更简单的东西。

【问题讨论】:

  • 没有。您只能使用动态 SQL 来执行此操作。
  • 对于数字排序列,您可以在 order by 子句中将其乘以 1 或 -1。对于字符串,它变得更加复杂。
  • 这能回答你的问题吗? SQL Dynamic ASC and DESC
  • 没有。允许这将是 SQL 注入的邀请 - 考虑 :DIR 是否绑定到类似 ASC; DROP TABLE Students;...

标签: sql oracle select keyword oracle19c


【解决方案1】:

可能吗?是的。

SQL> select * From dept order by deptno &par_ad;
Enter value for par_ad: desc

    DEPTNO DNAME          LOC
---------- -------------- -------------
        40 OPERATIONS     BOSTON
        30 SALES          CHICAGO
        20 RESEARCH       DALLAS
        10 ACCOUNTING     NEW YORK

SQL> /
Enter value for par_ad: asc

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

SQL>

【讨论】:

  • 为了迂腐,&-substitution 是 sqlplus/sqlcl/SQL Developer 的一个特性。如果您使用不同的客户端,这可能无法正常工作。
  • @eaolson,问题是:“有可能吗?”。我发布的示例表明这是可能的。对? :)
  • 我不能在我的用例中使用&VAR,只能使用:VAR
猜你喜欢
  • 2011-04-11
  • 2010-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多