Crystal / Oracle参数化查询使用变量

时间:2010-02-10 21:09:17

标签: sql oracle plsql parameters

我目前在Crystal Report中有一个类似于

的数据库命令对象
SELECT *
    FROM table
    WHERE field = {?EndDate}

我想改变它,看起来更像是

IF {?EndDate} = DATE '1900-01-01' 
    MyVariable = ADD_MONTHS(LAST_DAY(SYSDATE), -1)
ELSE
    MyVariable = {?EndDate}

SELECT * 
    FROM table
    WHERE field = MyVariable

我有点想到如何构建动态查询来做到这一点,但我不知道这是否真的是我想要做的。有人能指出我正确的方向吗?感谢。

1 个答案:

答案 0 :(得分:1)

Select * 
from table
where field = decode
         (myvariable,'1900-01-01',ADD_MONTHS(LAST_DAY(SYSDATE), -1)
                    ,myvariable)

[读取:从我的表中选择*,其中字段等于..解码myvariable;如果它是1-1-1900,那么在当前sysdate之前一个月,否则,使用变量]

类似的东西。