将数字变量传递给简单的 oracle 查询

Passing Numeric Variable into Simple oracle query

我有table

表A

ID    PRICE    DATE
123   200      01-SEP-2015
456   500      01-AUG-2015

在我的查询中,我想在 (date + X months)< sysdate else show null 时显示日期。 我在该查询中使用变量时遇到问题。

例如记录 1

(01-SEP-2015 + 3 months) = 01-DEC-2015 不小于 sysdate 所以,我不想显示那个日期。

但另一方面是第二条记录 (01-AUG-2015 + 3 months) = 01-NOV-2015 小于 sysdate 所以,我想显示那个日期。

declare
x number(5);
set x:=3;

select 
a.ID,
a.PRICE,
case when( ADD_MONTHS(a.DATE, x) < sysdate() )
   then a.DATE
else
    NULL
end as NEW_DATE
from TableA a;

你需要在变量名前加一个符号(&)来告诉SQL*加号代入变量的值:

declare
x number(5);
set x:=3;

select a.ID,
       a.PRICE,
       case
         when ADD_MONTHS(a.DATE, &x) < sysdate then a.DATE
         else NULL
      end as NEW_DATE
  from TableA a;

此外,DATE 是 Oracle 中的一种数据类型 - 不要将其用作列名。你可以这样做,但它会在某处引起问题。

祝你好运。