首页 > 解决方案 > Oracle SQL 重用用户输入

问题描述

我基本上想重用一个输入来避免用户再次输入相同的东西..

查询如下所示:

select * from table
where bb.bbn_from_dttm >= TO_DATE('&Bill_Date_ddmmyyyy','dd-mm-yyyy')
and bb.bbn_to_dttm <= LAST_DAY('&Bill_Date_ddmmyyyy');

我不希望用户输入两次并从第一个输入中获取值会给我我需要的日期范围。

这是 SQL 甲骨文。

有什么线索吗?

标签: sqloracle

解决方案


请注意使用内联视图将输入字符串转换为日期(整个查询只需一次) - 然后查询的其余部分使用在此内联视图中创建的日期,而不是用户的输入。更改&&&是否需要查询在同一会话中运行时使用相同的输入(尽管在大多数情况下这不是用户想要的)。

select bb.* 
from   my_table bb
       join
       ( select TO_DATE('&Bill_Date_ddmmyyyy','dd-mm-yyyy') as bill_date
         from   dual
       ) d
  on   bb.bbn_from_dttm >= d.bill_date and bb.bbn_to_dttm <= LAST_DAY(d.bill_date);

推荐阅读