I use ODAC 6.90.0.54 & Oracle 10.2
I try generate pas file for SYS.DBMS_DATAPUMP.
I have problem with method Get_STATUS.
Oracle declartion
FUNCTION get_status (...) RETURN ku$_Status;
PROCEDURE get_status (..., status OUT ku$_Status1010);
PROCEDURE get_status (..., status OUT ku$_Status1020);
convert to
function GetStatus(...): TOraObject;
procedure GetStatus(...; out Status: TOraObject); overload;
procedure GetStatus(...; out Status: TOraObject); overload;
problem:
1. Type of Status is not define: ku$_Status1010 or ku$_Status1020 ?
2. In the future version of oracle may appear a new overloaded Get_Status with new type of status..., and how work?
3. Error: "Method 'GetStatus' with identical parameters exists already" on compilation
----------------
maybe use:
TkuStatus1010 = class(TOraObject)
...
AllocObject('ku$_Status1010');
...
Result:
procedure GetStatus(...; out Status: TkuStatus1010); overload;
procedure GetStatus(...; out Status: TkuStatus1020); overload;
Package Wizard and Object Type
New bug
I try execute GetStatus (generated with Package Wizard)
procedure TForm1.Button7Click(Sender: TObject);
var
Datapump: TSysDbmsDatapump; //generated (with Package wizard)
Number: TOraNumber;
begin
OraSession1.Open;
Number := TOraNumber.Create;
Datapump := TSysDbmsDatapump.Create(nil);
Datapump.Session := OraSession1;
Number.asInteger := 1;
Datapump.GetStatus(Number, Number, Number); //<-- bug
end;
Result
ORA-06550: Строка 2, столбец 14:
PLS-00382: выражение неправильного типа
ORA-06550: Строка 2, столбец 3:
PL/SQL: Statement ignored
instead of ORA-31623 (job not exist).
procedure TForm1.Button7Click(Sender: TObject);
var
Datapump: TSysDbmsDatapump; //generated (with Package wizard)
Number: TOraNumber;
begin
OraSession1.Open;
Number := TOraNumber.Create;
Datapump := TSysDbmsDatapump.Create(nil);
Datapump.Session := OraSession1;
Number.asInteger := 1;
Datapump.GetStatus(Number, Number, Number); //<-- bug
end;
Result
ORA-06550: Строка 2, столбец 14:
PLS-00382: выражение неправильного типа
ORA-06550: Строка 2, столбец 3:
PL/SQL: Statement ignored
instead of ORA-31623 (job not exist).