当前位置: 首页 > 知识库问答 >
问题:

如何在MyBatis中调用返回Oracle记录类型的Oracle函数

红智鑫
2023-03-14

我在包规格中有记录类型:

 TYPE Payment_Capabilities IS RECORD(
    pp_partial_payment NUMBER(1) DEFAULT 0,
    co_advance_payment NUMBER(1) DEFAULT 0,
    dp_deposit_payment NUMBER(1) DEFAULT 0,
    dr_deposit_repay   NUMBER(1) DEFAULT 0,
    wp_wallet_payment  NUMBER(1) DEFAULT 0,
    wr_wallet_repay    NUMBER(1) DEFAULT 0,
    ss_prepaid_payment NUMBER(1) DEFAULT 0);

和返回此类型的函数。我正在使用MyBatis与Spring的集成。如何调用(使用MyBatis XML映射器)这个函数并将结果映射到POJO对象?

共有1个答案

赫连实
2023-03-14
<select id="identifyPaymentCapabilities" parameterType="PaymentCapabilities" statementType="CALLABLE">
    DECLARE
        v_payment_capabilities APS.Payment_Capabilities;
    BEGIN
        v_payment_capabilities := APS.get_payment_capabilities(#{customerId, javaType=Integer, jdbcType=NUMERIC, mode=IN});

        #{partialPaymentPP, javaType=Integer, jdbcType=NUMERIC, mode=OUT} := v_payment_capabilities.pp_partial_payment;
        #{advancePaymentCO, javaType=Integer, jdbcType=NUMERIC, mode=OUT} := v_payment_capabilities.co_advance_payment;
        #{depositPaymentDP, javaType=Integer, jdbcType=NUMERIC, mode=OUT} := v_payment_capabilities.dp_deposit_payment;
        #{depositRepayDR,   javaType=Integer, jdbcType=NUMERIC, mode=OUT} := v_payment_capabilities.dr_deposit_repay;
        #{walletPaymentWP,  javaType=Integer, jdbcType=NUMERIC, mode=OUT} := v_payment_capabilities.wp_wallet_payment;
        #{walletRepayWR,    javaType=Integer, jdbcType=NUMERIC, mode=OUT} := v_payment_capabilities.wr_wallet_repay;
        #{prepaidPaymentSS, javaType=Integer, jdbcType=NUMERIC, mode=OUT} := v_payment_capabilities.ss_prepaid_payment;
    END;
</select>
 类似资料:
  • 问题内容: 我有一个内部进行一些修改的函数,它返回一个值。 最初的想法是做这样的事情: 不幸的是,这不适用于Oracle。建议做这种事情的方法是什么? 有没有办法从我的陈述中提取声明的变量? 问题答案: Hibernate Session提供了一种直接访问的方法。然后,您可以创建并用于执行功能:

  • 问题内容: 我负责处理的应用程序之一是每隔x秒检查一次Oracle DB表,以查看是否有新数据要处理(其他实时应用程序正在填充该数据)。 我们新的客户业务流程迫使我们的实时性在同一时间(比如说10000)同时每天填充几次记录来填充该表。下次我的应用程序检查是否有任何要处理的内容时,遇到10 000条记录并尝试对其进行处理。 它的设计不是很好,而且扩展性还不够好。快速解决方案是限制该应用程序从Ora

  • 我找到了一些很好的SO链接(如何从异步回调函数返回值?以及从node.js中的回调函数返回值等),但它们并不是不能为我的问题提供解决方案。 我的问题:能够得到异步调用的结果,但我如何使用这个结果返回我的函数? 这里获取callBackResponse的值为true或false,并希望将该值用作:

  • 问题内容: 我正在尝试从使用两个表(员工和部门)的函数返回%rowtype中的多个值,但是它对我不起作用。 问题答案: 上面的函数编译没有任何错误?是什么类型的?理想情况下,它应该像下面这样。

  • 问题内容: 返回vs的函数有什么区别,其他所有条件相等。 这些函数似乎返回相同的结果。请参阅此SQLFiddle。 问题答案: 返回时,输出列未键入且未命名。因此,这种形式不能像在子查询或表中一样直接在FROM子句中使用。 即,在发行时: 我们得到这个错误: 错误:返回“记录”的函数需要列定义列表 但是,SQL调用者可以将其“广播”为正确的列类型。此表格可以正常工作: 结果为: 因此,被认为不太实

  • 问题内容: 考虑下表, 我如何获得以下结果 尝试过的形式但未获得正确的结果,数学将始终放在Subject_1之下,而Science总是在SUbject_2之下。 问题答案: 使用: 最大限度 通过…分组 SQL>选择名称, 2个最大(subject_1)subject_1, 3个最大(marks_1)个marks_1, 4个MAX(subject_2)subject_2, 5个最大(marks_2