将数字变量传递给简单的 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 中的一种数据类型 - 不要将其用作列名。你可以这样做,但它会在某处引起问题。
祝你好运。
我有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 中的一种数据类型 - 不要将其用作列名。你可以这样做,但它会在某处引起问题。
祝你好运。