【发布时间】:2020-07-06 09:15:07
【问题描述】:
我在 2 个相互交换数据的系统之间有一个接口。这是一个可以通过 GUI 修改的默认界面,例如您可以选择使用两边的一组字段,也可以选择保持原样。
现在在我的代码中有如下所示的 UPDATE SQL 查询
UPDATE TABLE1 SET
FIELD1_GROUP1=:FIELD1_GROUP1,FIELD2_GROUP1=:FIELD2_GROUP1,FIELD3_GROUP1=:FIELD3_GROUP1,
FIELD1_GROUP2=:FIELD1_GROUP2,FIELD2_GROUP2=:FIELD2_GROUP2,FIELD3_GROUP2=:FIELD3_GROUP2
ADOQuery.Parameters.ParamByName('FIELD1_GROUP1').Value := MyField1_Group1_From_SystemB;
....
现在,如果我选择不使用 GROUP2,则不可能不设置参数。我找到了一个适用于类似
的解决方案if USE_GROUP2 then
begin
ADOQuery.SQL.add(FIELD1_GROUP2=:FIELD1_GROUP2,FIELD2_GROUP2=:FIELD2_GROUP2,FIELD3_GROUP2=:FIELD3
_GROUP2);
ADOQuery.Parameters.ParamByName('FIELD1_GROUP1').Value := MyField1_Group1_From_SystemB;
...
end;
但是这种解决方案会在我的系统之间进行,以便在每个使用 SQL 的函数的开头看到完整的 SQL QUERY。它会将我们干净的代码分解成可读性差的块。
我想知道参数是否没有在其值内删除参数的功能。 感谢帮助
【问题讨论】:
-
没有。如果您在查询中指定了一个以 : 开头的参数,那么这就是您的查询中的一个参数。如果您不想更新该值,请编写没有该参数的不同 SQL 语句。
-
您使用的是哪个 DBMS?
-
我正在使用 Firebird DB