sql - 在 Delphi SQL 参数中插入字段名称而不是字符串

标签 sql delphi parameters

我在delphi中编写了一个带有参数的SQL查询

WHERE L1.IdListino = :IdListino

根据用户的一些输入,我希望此参数可以是表单的字段(tParsIdListinoExport 是字段的名称),也可以是另一个表的列(类似于 WHERE L1.IdListino = fat.IdListino )。

if tParsIdListinoExport.AsString <> '' then
        qSel.ParamByName( 'IdListino' ).AsString := tParsIdListinoExport.AsString
    else
        qSel.ParamByName( 'IdListino' ).Value := 'fat.IdListino';
end;

遗憾的是,看起来我无法插入列名称作为参数,因为它在列名称周围添加了“”,从而将其视为纯文本。 是否可以从参数中删除“”? 非常感谢,

法比奥

最佳答案

您需要在运行时创建 SQL 指令,例如:

with qSel do
begin
    Close;
    SQL.Clear;
    SQL.Add(addYourSqlHere, without Where clause);
    if Condition1 then
        SQL.Add('where FIELD1 = :PARAM01')
    else
        SQL.Add('where FIELD2 = :PARAM01');
    ParamByName('PARAM01').Value := UserFilter;
end;

关于sql - 在 Delphi SQL 参数中插入字段名称而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42769317/

相关文章:

mysql - sql 在更新时创建触发器

MySQL:用其他行值计算和更新一行?

android - 我的 TVertScrollBox 不想在 Android 上滚动

java - 这个删除重复链表的 void 函数是如何完成任务的呢? Java中的参数传递

java - setBytes 的参数索引有什么作用

mysql - 如何为数据数组sql创建短代码

具有多个连接、计数和左连接的 SQL 到 LINQ

Delphi - 设置注册表项的完全控制

delphi - 连接 Windows 服务中的映射驱动器盘符

python - 传递参数而不是全局变量