我在 Oracle 中创建了一个函数,可以将记录插入特定的表,并根据函数内发生的情况返回输出。例如(ins_rec 返回数字)。
如何在 Delphi 中调用此函数并查看其输出?
我已经收到了有关 sql plus 的回复(非常感谢),但我需要知道如何在 Delphi 中执行此操作。
如何在 Delphi 中调用此函数并查看其输出?
我已经收到了有关 sql plus 的回复(非常感谢),但我需要知道如何在 Delphi 中执行此操作。
Var
RetValue: Integer;
begin
Query1.Clear;
Query1.Sql.Text := 'Select MyFunction(Param1) FunRetValue from dual';
Query1.Open;
if not Query1.Eof then
begin
RetValue := Query1.FieldByName('FunRetValue').AsInteger;
end;
end;
Qry.SQL.Clear;
Qry.SQL.Add('BEGIN');
Qry.SQL.Add(' :Rez := ins_rec;');
Qry.SQL.Add('END;');
// Set the parameter type here...
...
Qry.ExecSQL;
...
ReturnValue := Qry.ParamByName('Rez').Value;
我不会使用函数,而是使用带有OUT值的存储过程。此外,Oracle提供了包,这是一种非常好的组织过程和函数的方法,它们还提供有用的功能,如会话变量和初始化/结束部分... 非常类似于Delphi单元。
我们使用这段代码运行一个Oracle存储过程,该代码利用了BDE(我知道请不要抨击我们使用BDE!)
Try
DMod.Database1.Connected:= False;
DMod.Database1.Connected:= True;
with DMod.StoredProc1 do
begin
Active:= False;
ParamByName('V_CASE_IN').AsString:= Trim(strCaseNum);
ParamByName('V_WARRANT_IN').AsString:= strWarrantNum;
ParamByName('V_METRO_COMMENTS').AsString:= strComment;
Prepare;
ExecProc;
Result:= ParamByName('Result').AsString;
end;
Except