【发布时间】:2012-06-02 12:49:17
【问题描述】:
我正在开发处理 存储过程的 Delphi 应用程序。我为插入语句创建了存储过程,它适用于我的应用程序。 现在,我想为 select 语句创建相同的语句。
CREATE TYPE list_all_firstname AS ( first_name character varying);
CREATE FUNCTION select_sp()
RETURNS SETOF list_all_firstname AS
$$
DECLARE
rec record;
BEGIN
FOR rec IN (SELECT first_name FROM person) LOOP
RETURN NEXT rec;
END LOOP;
END;
$$ LANGUAGE plpgsql;
电话是:
SELECT * FROM select_sp();
直到在 postgres 中一切都很好。我想在我的 delphi 应用程序中访问这个存储过程。 我的代码是:
with StoredProc2 do begin
StoredProcName :='select_sp';
ExecProc;
Edit5.Text:=ParamByName('list_all_firstname').AsString ;
end;
但我收到错误提示 “找不到对象”。如何在 delphi 中访问存储过程的返回值??
【问题讨论】:
-
如果 StoredProc2 是 TDataset 后代,则必须使用 FieldByName。使用 TDataset 后代 ParamByName 用于传递给查询/存储过程的参数,而不是它返回的结果。
标签: delphi postgresql stored-procedures