Oracle中的FireDac调用函数
我的代码:Oracle中的FireDac调用函数,oracle,delphi,firedac,Oracle,Delphi,Firedac,我的代码: 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 := F
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 Add do begin
Name := 'pn';
ParamType := ptInput;
DataType := ftInteger;
end;
另获取错误。应为INTO子句
另获取错误。需要INTO子句将“aaaaa”更改为“aaaaa”,然后重试。Oracle数据库中的所有标识符默认为大写。祝你好运。不带引号的标识符不区分大小写,并且被视为大写。所以这并不重要,除非firedac会在存储的进程名周围隐式添加引号,这会很奇怪。请将“aaaaa”更改为“aaaaa”,然后重试。Oracle数据库中的所有标识符默认为大写。祝你好运。不带引号的标识符不区分大小写,并且被视为大写。所以这并不重要,除非firedac会在存储的进程名称周围隐式添加引号,这会很奇怪。[firedac][Phys][Ora]-338.Param[pn]类型从[ftMTBcd]更改为[ftInteger].Query必须重新准备。可能的原因对TFDparam.AsXXX属性的分配已显式更改参数数据类型。提示:使用TFDparam.Value或适当的TFDparam.AsXXX属性。[FireDac][Phys][Ora]-338.Param[pn]类型已从[ftMTBcd]更改为[ftInteger].Query必须重新准备。可能的原因对TFDparam.AsXXX属性的分配已明显更改参数数据类型。提示:使用TFDparam.Value或适当的TFDparam.AsXXX属性。