Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách trả lại Oracle Cursor từ proc được lưu trữ dưới dạng Tập dữ liệu máy khách bằng Delphi và DBExpress

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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQLPlus thiết lập biến môi trường dựa trên biến

  2. Oracle ojdbc8 12.2.0.1 bị Maven cấm

  3. Lỗi Oracle ORA-06512

  4. Câu lệnh Oracle DELETE với bao thanh toán truy vấn con

  5. Mở gói với OracleConnection