作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 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 中是否有特定的方法?
谢谢。
最佳答案
这就是 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
也可以工作。当列名可以是数据库中的一些保留字并且必须以某种方式引用时,这甚至可能是必要的。
关于delphi - Firedac 将列名作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69531370/
我是一名优秀的程序员,十分优秀!