Как это сделать, может зависеть от того, какую библиотеку доступа к БД вы используете (BDE? DbExpress? ADO? Другие), некоторые могут предлагать компонент "хранимой процедуры", который также может работать с функциями.
Общий подход к использованию анонимного блока PL / SQL для вызова функции (и параметра для чтения возвращаемого значения), PL / SQL во многом напоминает Паскаль ...:
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.