【发布时间】:2019-07-20 07:34:57
【问题描述】:
我的代码:
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处输入了一个数字。
【问题讨论】:
-
将 'aaaaa' 更改为 'AAAAA' 并重试。默认情况下,Oracle 数据库中的所有标识符都是大写的。祝你好运。
-
不带引号的标识符不区分大小写,并被视为大写。所以这不重要,除非firedac会在存储的proc名称周围隐式添加引号,这很奇怪。