【发布时间】:2021-12-07 12:17:22
【问题描述】:
我有一个 TParams 实例 (FParams),当我调用 ParseSQL() 时,如果给定的 SQL 包含对同一参数名称的多个引用,它会重复参数。
例如:
FParams.ParseSQL(
'select * from user_relations where user1 = :p_logged_user or user2 = :p_logged_user',
True);
它会生成两个具有相同名称的 TParams 项目,这会在我的代码后面引起问题。我知道 DB 访问组件 (TUniQuery) 消除了这个问题,并且在解析其 SQL 文本时不会重复参数,但我无法找到相关代码,如何轻松做到这一点。
是否有任何内置方法可以防止 TParams 存储/解析重复的参数?
我已经在 ParseSQL() 之后编写了代码来立即删除它们,我只是想知道我是否错过了一些“开箱即用”的解决方案。
更新了示例代码,以明确我为什么要为两个参数使用相同的名称。我的意见是同名让代码更直接。
【问题讨论】:
-
最简单的选择是对参数进行不同的命名,例如。
:P1和:P2并为两个参数提供相同的值。 -
谢谢,但我不希望这样,可能会让其他开发人员感到困惑,甚至一段时间后自己也会感到困惑:)
-
我在下面为您提供另一种选择作为答案。
标签: delphi