Delphi 2010,UIB,Firebird:重复的参数名称

时间:2014-02-23 18:29:38

标签: delphi firebird uib

我正在使用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?
  • 我的修复是否可行?
  • 有更好的修复方法吗?

1 个答案:

答案 0 :(得分:1)

Firebird本身不支持动态SQL中的命名参数(在程序SQL中也是如此)。 Firebird仅支持位置参数。

因此,您的驱动程序会将命名参数转换为位置。