【问题标题】:Crystal/Oracle parameterized query to use variableCrystal/Oracle 参数化查询使用变量
【发布时间】:2010-02-10 21:09:16
【问题描述】:

我的 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

我有点了解如何构建动态查询来执行此操作,但我不知道这是否真的是我想要做的。有人可以指出我正确的方向吗?谢谢。

【问题讨论】:

    标签: sql oracle plsql parameters


    【解决方案1】:
    Select * 
    from table
    where field = decode
             (myvariable,'1900-01-01',ADD_MONTHS(LAST_DAY(SYSDATE), -1)
                        ,myvariable)
    

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

    类似的东西。

    【讨论】:

    • 啊,这让它更容易一些。罗嗦,因为我使用它大约 5 次,但可行。谢谢!
    • 这样你就不用担心变量声明了,所以对你来说可能会更容易一些。重复并不像看起来那么糟糕,但它仍然是重复。
    • 好吧,我不介意担心变量声明,如果它能让代码更高效...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    相关资源
    最近更新 更多