我们正在为系统提供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中调用该过程?
谢谢。