0

我想从我的休眠类传递一个用户定义的对象并将其传递给一个存储过程,该过程读​​取这个对象列表并进行处理。我该怎么做?

类如下。

public class ExcelListenerBean {
    private int id;
    private String shortName;
    private String fmrCusip;
    private Double incorrectTrdShares;
    private Double incorrectTrdPrice;
    private String incorrectTrdBuySell;
    private Double incorrectTrdCommRate;
    private Double incorrectTrdCommission;
    private Double incorrectTrdFees;
    private Double incorrectTrdNet;
    private Double correctionTrdShares;
    private Double correctionTrdPrice;
    private String correctionTrdBuySell;
    private Double correctionTrdCommRate;
    private Double correctionTrdCommission;
    private Double correctionTrdFees;
    private Double correctionTrdNet;
    private String currency;
    private String fx;
    private Double netUSD;
    private String notes;
}

任何人都可以让我知道如何起草程序以及如何遍历 ExcelListenerBean 对象列表并将它们保存到表中。

4

1 回答 1

0
  1. 创建 OBJECT 类型,例如MyType is OBJECT ....在 Oracle 中具有您需要的所有字段
  2. 创建集合类型,TableOfMyObject IS TABLE OF MyObjectType
  3. 创建TableOfMyObject作为参数的过程。

您可以在存储过程中的 SQL 语句中使用集合变量,例如 SELECT * FROM TABLE(collection_variable)

我也这样做了,但最大的挑战是使用 hibernate 从应用程序中调用它——我终于找到了这样做的方法。

更新 可从 Toad 运行的 SQL。

set serveroutput on; -- for debugging, 
-- it makes sense if your procedure outputs anything
declare my_list TableOfMyObject  := TableOfMyObject ();
begin 
  my_list.extend;
  my_list(1) := MyType([MyType constructor parameters]);

  my_list.extend;
  my_list(2) := MyType([MyType constructor parameters]);
  your_procedure(my_list);
end;
于 2012-12-20T13:35:24.297 回答