德尔福存储过程无法识别参数

时间:2016-12-22 18:32:03

标签: delphi stored-procedures firebird firebird2.5

我使用的是Firebird 2.5和IBExpert。

我有以下存储过程:

SET TERM ^ ;

CREATE OR ALTER PROCEDURE "ButtonGroupName_proc" ("ButtonGroupName_in" "SystemObjectName")
returns ("ButtonGroupName_out" "SystemObjectName")
as
begin
  for
    select "ButtonName"
    from   "ButtonGroupName_ButtonName"
    where  "ButtonGroupName_ButtonName"."ButtonGroupName" = :"ButtonGroupName_in"
    into   :"ButtonGroupName_out"
  do
  suspend;
end
^
SET TERM ; ^

在运行时我编码:

...
var
  lStoredProc : tFDStoredProc;
...
lStoredProc := tFDStoredProc.Create (Application);
  with lStoredProc do begin
        Connection     := dmSysData.SysData_Connection;
        StoredProcName := DoubleQuotedStr ('ButtonGroupName_proc');
        ParamByName ('ButtonGroupName_in').Value := 'ButtonGroup_System_Tasks';
        Open;
        ...
    end;

运行时,我会得到"参数' ButtonGroupName_in'找不到"错误,尽管它在存储过程中被声明为输入参数,可以从上面的脚本中验证。

上面的代码是根据Web上的一个非常相似的例子改编的,但它不适用于我的代码。

1 个答案:

答案 0 :(得分:0)

虽然Delphi可以通过解析SQL属性的内容自动从SELECT语句中推断出参数,但它对存储过程的参数不能做同样的事情,所以你需要用{{{ 1}}数组:

Params

它检索我需要的东西:即属于特定按钮组的按钮的名称。