我使用的是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上的一个非常相似的例子改编的,但它不适用于我的代码。
答案 0 :(得分:0)
虽然Delphi可以通过解析SQL
属性的内容自动从SELECT语句中推断出参数,但它对存储过程的参数不能做同样的事情,所以你需要用{{{ 1}}数组:
Params
它检索我需要的东西:即属于特定按钮组的按钮的名称。