Oracle 中的 FireDac 调用函数

FireDac Call Function in Oracle

我的代码:

FDStoredProc1.StoredProcName := 'aaaaa' ;
with FDStoredProc1.Params do begin
  Clear;
  with Add do begin
    ParamType := ptInput;
    DataType := ftInteger;
  end;
end;  
FDStoredProc1.Params[0].Value := StrToint(edit1.Text) ;
edit1.Text := FDStoredProc1.ExecFunc() ;

我在 Oracle 中的代码:

create or replace FUNCTION AAAAA (pn number) RETURN VARCHAR2 AS 
BEGIN
  update dmnv set thuong = pn  ; 
  commit  ; 
  RETURN '3' 
END AAAAA;

运行时没有错误,但在Oracle Server(版本12)中参数为NULL。所以服务器上的函数是 exec,参数错误(真正的参数是 edit1.text 中的值)。我在 edit1 中输入了一个数字。

为参数命名。

  with Add do begin
    Name := 'pn';
    ParamType := ptInput;
    DataType := ftInteger;
  end;
with FDQuery1.SQL do begin
    Clear;
    Add('begin');
    Add('  select  aaaaa(8) from dual ;');
    Add('end;');
 end;
 FDQuery1.ExecSQL;

同时得到 error.a 预期的 INTO 子句