【问题标题】:Firedac Passing Column name as ParameterFiredac 将列名作为参数传递
【发布时间】:2021-10-11 19:12:40
【问题描述】:

在 Delphi Firedac 中,我有一个很长的查询。我想重用它只是通过这样的参数更改列的名称

select f1, f2
from t1
where id = :par1
and :colimn_name = :value_name

传递 :column_name 参数,结果查询是这样的:

select f1, f2
from t1
where id = 123
and 'department_name' = 'production'

用 2 '' 包裹列名。

如何避免这种情况,FireDAC 中是否有特定的方法?

谢谢。

【问题讨论】:

    标签: delphi firedac


    【解决方案1】:

    这就是 FireDAC 提供的宏:Substitution Variables

    select f1, f2
    from t1
    where id = :par1
    and &column_name = :value_name
    

    这样设置实际的列:

    myQuery.MacroByName('column_name').AsRaw := 'department_name';
    

    编辑:由于列名恰好是数据库标识符,因此使用AsIdentifier 代替AsRaw 也应该可以。当列名可以是数据库中的一些保留字并且必须以某种方式引用时,这甚至可能是必要的。

    【讨论】:

    • 我很喜欢 FireDAC 和 Delphi
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    相关资源
    最近更新 更多