Như paulsm4 đã đề cập trong this answer
, Delphi không quan tâm đến việc nhận các bộ mô tả tham số thủ tục được lưu trữ, và do đó bạn phải tự mình thực hiện. Để lấy các thông số của thủ tục được lưu trữ Oracle từ một gói, bạn có thể thử sử dụng GetProcedureParams
để điền vào danh sách với các bộ mô tả tham số và với LoadParamListItems
điền thủ tục với danh sách đó Params
thu thập. Trong mã, nó có thể giống như sau.
Xin lưu ý rằng mã sau chỉ được viết trong trình duyệt theo tài liệu, vì vậy nó chưa được kiểm tra. Và có, về việc giải phóng ProcParams
biến này được thực hiện bởi FreeProcParams
thủ tục:
var
ProcParams: TList;
StoredProc: TSQLStoredProc;
...
begin
...
StoredProc.PackageName := 'KP_DATASNAPTEST';
StoredProc.StoredProcName := 'GetFaxData';
ProcParams := TList.Create;
try
GetProcedureParams('GetFaxData', 'KP_DATASNAPTEST', ProcParams);
LoadParamListItems(StoredProc.Params, ProcParams);
StoredProc.ParamByName('abbr').AsString := 'ZZZTOP';
StoredProc.Open;
finally
FreeProcParams(ProcParams);
end;
...
end;