Just use a Package and a Query

type
...

DBMS_DDL: TOraclePackage;
Proc_Items_qry: TOracleQuery;
...
public
...
procedure Recompile_All;
end;

and use this procedure:
procedure TDataModule_Procs.Recompile_All;
var
Param1, Param2, Param3: Variant;
begin
with Param0_qry do
try
SQL.Clear;
SQL.Add('SELECT OBJECT_NAME, OBJECT_TYPE FROM ALL_OBJECTS WHERE STATUS = 'INVALID' AND
OBJECT_TYPE IN ('PROCEDURE', ' FUNCTION', 'PACKAGE', 'PACKAGE BODY')');
execute;
while not EOF do
begin
Param1 := Field('OBJECT_TYPE');
Param2 := NULL;
Param3 := Field('OBJECT_NAME');
with DBMS_DDL do
try
CallProcedure('ALTER_COMPILE', [Param1, Param2, Param3]);
except
on E: EOracleError do
ShowMessage(E.Message);
end;
next;
end;
except
on E: EOracleError do
ShowMessage(E.Message);
end;
end;

------------------
JohaViss


JohaViss