1

我在包上下文中有 plsql 代码:

type t_demand_for_excel_upload is record
(
    bsns_oper_name t_string,
    demand_date date,
    demand_hour integer,
    demand_value number
);
type t_cur_demands_for_excel_upload is ref cursor return t_demand_for_excel_upload;

procedure get_demands_for_excel_upload
(
    p_calc_version_id in integer,
    p_shop_id in integer,
    p_start_date in date,
    p_end_date in date,
    p_result out t_cur_demands_for_excel_upload
);

Jooq版本:

<jooq.groupId>org.jooq.pro</jooq.groupId>
<jooq.version>3.12.3</jooq.version>
<jooq.generator.db.dialect>org.jooq.meta.oracle.OracleDatabase</jooq.generator.db.dialect>

当我使用 oracle 12c 生成代码时 - 没关系,它在 java 中看起来像这样:

public static Result<Record> getDemandsForExcelUpload(Configuration configuration, BigInteger pCalcVersionId, BigInteger pShopId, LocalDate pStartDate, LocalDate pEndDate) {
        GetDemandsForExcelUpload f = new GetDemandsForExcelUpload();
        f.setPCalcVersionId(pCalcVersionId);
        f.setPShopId(pShopId);
        f.setPStartDate(pStartDate);
        f.setPEndDate(pEndDate);

        f.execute(configuration);
        return f.getReturnValue();
    }

Result<Record>正如我所料。

在maven中调试: 在此处输入图像描述

在 oracle 19c 上生成的代码如下所示:

public static TDemandForExcelUploadRecord getDemandsForExcelUpload(Configuration configuration, BigInteger pCalcVersionId, BigInteger pShopId, LocalDate pStartDate, LocalDate pEndDate) {
        GetDemandsForExcelUpload f = new GetDemandsForExcelUpload();
        f.setPCalcVersionId(pCalcVersionId);
        f.setPShopId(pShopId);
        f.setPStartDate(pStartDate);
        f.setPEndDate(pEndDate);

        f.execute(configuration);
        return f.getReturnValue();
    }
public class TDemandForExcelUploadRecord extends UDTRecordImpl<TDemandForExcelUploadRecord> implements Record4<String, LocalDate, BigInteger, BigDecimal> { ...

我的光标在哪里?请帮忙。

oracle 19c 的 Maven 调试: 在此处输入图像描述

两种情况下的 jooq 设置是相同的

4

1 回答 1

1

这似乎是 jOOQ 3.14 中的一个错误,或者说是缺少的功能。我们没有针对强类型REF CURSOR类型进行任何集成测试,所以我们没有注意到这种回归。我为此创建了两个问题:

于 2021-03-24T15:59:39.320 回答