【问题标题】:Dynamic Query Issue动态查询问题
【发布时间】:2021-10-27 10:10:00
【问题描述】:

变量:path_start_date=14-MAY-21,17-MAY-21,06-APR-12

查询:

select greatest(''||REPLACE(''''||&path_start_date||'''',',',''',''')||'')
from dual;

预期输出 = 17-MAY-21

任何人都可以建议上述查询有什么问题。

【问题讨论】:

    标签: sql oracle plsql dynamic-sql


    【解决方案1】:

    将输入字符串拆分为行,并获取MAX 值:

    SQL> with temp (val) as
      2    (select '14-MAY-21,17-MAY-21,06-APR-12' from dual)
      3  select
      4  max(to_date(regexp_substr(val, '[^,]+', 1, level), 'dd-mon-yy',
      5              'nls_date_language = english'
      6             )
      7     ) max_datum
      8  from temp
      9  connect by level <= regexp_count(val, ',') + 1
     10  /
    
    MAX_DATUM
    ---------
    17-MAY-21
    
    SQL>
    

    【讨论】:

    • 能否请您在动态查询中提供解决方案或帮我找到查询中的错误??
    • 动态什么?而不是第 2 行中的字符串,使用例如select :par_string from dual 代替。
    猜你喜欢
    • 2010-12-31
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多