我正在使用 Delphi 2010 和 UIB 来访问 Firebird 数据库。
我正在尝试运行查询
SELECT
RECID
FROM TABLE
WHERE ((:DX = '') OR (DX=:DX))
AND ((:POSTCODE='') OR (POSTCODE=:POSTCODE))
请注意,我在语句中使用了每个命名参数两次。
当我在 TUIBQuery 中准备它时,我得到 ParamCount=2 和两个名为 DX 的参数。当我跟踪代码时,我看到 TSQLParams.Parse 传递了我的 SQL 并四次调用 AddFieldA。我可以看到重复项被识别并添加到 FXSQLDA 的末尾,但 FParamCount 没有增加。
作为一个临时的愚蠢修复,我添加了这样一个增量,现在我得到 (DX, DX, POSTCODE, POSTCODE) 作为参数列表。那种作品。
问题:
- Firebird 是否支持我尝试的那种参数重用?
- 通过 UIB?
- 我的修复可行吗?
- 有更好的修复吗?