Delphi / FireDac + PostgreSQL + StoredProc +过程(要调用过程,请使用CALL)

时间:2019-08-01 13:19:11

标签: postgresql delphi firedac

我们正在为系统提供postgreSQL数据库支持,我们目前正在与Oracle合作。

我们正试图在数据库中调用过程,就像在oracle中一样。

var conBanco := TFDConnection.Create(Self);
try
   conBanco.Params.Database := 'Database';
   conBanco.Params.UserName := 'UserName';
   conBanco.Params.Password := 'Password';
   conBanco.Params.Values['Server'] := 'IP';
   conBanco.Params.DriverID := 'PG';
   conBanco.Open();

   var stpBanco := TFDStoredProc.Create(Self);
   try
      stpBanco.Connection := conBanco;
      stpBanco.StoredProcName := 'gerador_padrao';
      stpBanco.Prepare;
      stpBanco.ParamByName('gerador').Value := 'pessoas';
      stpBanco.ExecProc();
      ShowMessage(VarToStrDef(stpBanco.ParamByName('parchave').Value, ''));
   finally
      stpBanco.Free;
   end;
finally
   conBanco.Free;
end;

但是我们收到以下错误:

  

异常类:异常

     

异常消息:EPgNativeException:[FireDAC] [Phys] [PG] [libpq]   错误:superus.gerador_padrao(gerador =>字符变化,parchave   =>数字)是一个过程。要调用过程,请使用CALL。

数据库中的过程

CREATE OR REPLACE PROCEDURE superus.gerador_padrao(gerador character varying, INOUT parchave numeric)
 LANGUAGE plpgsql
AS $procedure$
begin
   --Code
end;
$procedure$
;

该错误发生在以下行:

stpBanco.Prepare;

上面的代码在oracle中工作完美,如何在PostgreSQL中调用该过程?

谢谢。

0 个答案:

没有答案