如何从Delphi调用Oracle函数?

mah*_*her 7 delphi oracle function

我在Oracle中创建了一个函数,它在特定的表中插入记录,并根据函数中的内容返回输出.例如(ins_rec返回号码)

如何在Delphi中调用此函数并查看其输出?

我得到了sql plus的回复(谢谢),但我需要知道如何在Delphi中做到这一点

Bha*_*rat 6

只需将用户定义的函数作为列名称传递给查询,它就可以工作.

例:

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;
Run Code Online (Sandbox Code Playgroud)


小智 5

如何实现它可能取决于你使用的是什么数据库访问库(BDE?dbExpress?ADO?其他),有些可能提供一个可能与函数一起使用的"存储过程"组件.

它使用匿名PL/SQL块来调用函数(以及读取返回值的参数)的一般方法,PL/SQL类似于Pascal ......:

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;
Run Code Online (Sandbox Code Playgroud)

我不会使用函数,但是具有OUT值的存储过程.此外,Oracle提供的是一种非常好的组织过程和函数的方法,它们还提供了有用的功能,如会话变量和初始化/完成部分......非常类似于Delphi单元.