【问题标题】:Delphi Postgres stored procedureDelphi Postgres 存储过程
【发布时间】: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


【解决方案1】:

我得到了答案。.could not find object 是 BDE 错误... 接下来是访问值,不需要使用存储过程组件。我们可以使用 TQuery 如下...:

  Query1.SQL.Clear;
  Query1.SQL.Add('SELECT * FROM select_sp()');
  Query1.Active := True;

  for i:=0 to Query1.RowsAffected-1 do
          begin
             sval:=Query1.FieldByName('first_name').AsString;
             ShowMessage(sval);
             Query1.Next;
          end;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 2023-03-13
    相关资源
    最近更新 更多