Delphi 2010 と UIB を使用して Firebird データベースにアクセスしています。
クエリを実行しようとしています
SELECT
RECID
FROM TABLE
WHERE ((:DX = '') OR (DX=:DX))
AND ((:POSTCODE='') OR (POSTCODE=:POSTCODE))
ステートメントで名前付きパラメーターをそれぞれ 2 回使用していることに注意してください。
TUIBQuery で準備すると、ParamCount=2 と DX という名前の 2 つのパラメーターが得られます。コードをトレースすると、TSQLParams.Parse が my SQL を渡し、AddFieldA を 4 回呼び出していることがわかります。重複が認識され、FXSQLDA の末尾に追加されていることがわかりますが、FParamCount はインクリメントされていません。
一時的なばかげた修正として、このようなインクリメントを追加し、(DX、DX、POSTCODE、POSTCODE) をパラメーター リストとして取得するようになりました。そういう作品です。
質問:
- 私が試みているパラメータの再利用は Firebird でサポートされていますか?
- UIBで?
- 私の修正は実行可能ですか?
- より良い修正はありますか?