在SQL查询中使用变量(Oracle DBMS)?

时间:2012-05-02 07:45:14

标签: sql oracle

我正在输入SQL查询以从基于Oracle数据库的软件工具中获取一些数据。我使用的是典型的SELECT语句。

现在,在我的SQL查询中,我在不同的地方使用日期“02.05.2012”。有没有办法在开头定义变量date_string,然后在所有相关位置使用此变量?

这会简化很多事情。感谢所有提示和技巧!

5 个答案:

答案 0 :(得分:4)

您可能会尝试重写查询以从内联视图返回文字...

select
   my_date,
   ...
from(
   select to_date('02.05.2012','DD.MM.YYYY') my_date from dual),
   table2
where
   some_column <= my_date

答案 1 :(得分:2)

您要查找的是绑定变量。

select to-date(:date, 'dd.mm.yyyy') date1
,      to-date(:date, 'dd.mm.yyyy') + 1 date2
from   dual

在运行时,您需要将值传递给绑定变量。这一切都取决于您的编程语言如何绑定变量,但有很多文档。 DEFINE仅在使用sql * plus时才有效,而在“软件工具”中通常不是这样:)

修改

我现在开始明白了。它只是一个textarea,您可以在其中输入查询,它将执行它并返回结果。在这种情况下,您要么编写一些复杂的pl / sql代码,要么手动输入所有日期,或者使用带有select的双重交叉连接:

with (select to_date('02.05.2012', 'dd.mm.yyyy') my_date from dual) d
select *
from   some_table t
cross join d -- no ON required 

答案 2 :(得分:1)

如果要使用当前日期进行选择,可以使用sysdate。

使用SQLPLUS,您可以定义自己的变量:

SQL> define mydate ="01-05-2012"

SQL> select to_date('&mydate','DD-MM-YYYY') from dual;

01-MAY-12

答案 3 :(得分:0)

尝试以下方法:

SELECT *
  FROM table1
 WHERE to_char(date1,'DD/MM/YYYY') = '&&date'
   AND to_char(date2,'DD/MM/YYYY') = '&&date'
   AND to_char(date3,'DD/MM/YYYY') = '&&date'

您将收到输入&amp;&amp;日期值的提示,如果您想为每个日期输入不同的值,则应键入&amp; date而不是&amp;&amp; date

答案 4 :(得分:0)

DEFINE对您的要求很有用。

DEFINE NAME="example"

使用&NAME

进行访问