如何从 Mule4 中的 Oracle 存储过程获取 TABLE 类型返回类型?

问题描述

您好,我正在尝试在 Oracle 中调用一个返回 TABLE 类型的存储过程。这是我的包裹

create or replace PACKAGE        "PKG_LOGIC_SERVICE" AS

TYPE ll_ret_rec IS RECORD (
    ll_attribute      loan_logic.attribute%TYPE,ll_ret_value      loan_logic.ret_value%TYPE,ll_edit_type      loan_logic.edit_type%TYPE,ll_applic_type    loan_logic.application_type%TYPE,ll_rule_order     loan_logic.rule_order%TYPE,ll_db_field_name  loan_logic.db_field_name%TYPE,ll_xpath_name     loan_logic.xpath_name%TYPE,ll_loan_id        loans.loan_id%TYPE,ll_process_id     NUMBER(12)
);
TYPE ll_ret_table IS
    TABLE OF ll_ret_rec;
PROCEDURE pr_loan_logic_check (
    in_loan_id        IN   loans.loan_id%TYPE,in_trans_id       IN   NUMBER,as_errm           OUT  VARCHAR2,-- curr_cursor_out   IN OUT  SYS_REFCURSOR,ll_ret_table_out  OUT  PKG_LOGIC_SERVICE.ll_ret_table
);

PROCEDURE pr_insert_pricing_table (
    in_loan_id     IN   loans.loan_id%TYPE,ad_cur_seq_no  OUT  NUMBER,ad_retval      OUT  NUMBER,as_errm        OUT NOcopY VARCHAR2
);

END PKG_LOGIC_SERVICE;

我试图从骡子打电话的方式如下

{call PKG_LOGIC_SERVICE.pr_loan_logic_check(776665544,987,:as_errm,:ll_ret_table_out)}

但是我收到一个错误

wrong number or types of arguments in call to 'pr_loan_logic_check'

我的 XML SP 部分是

<db:stored-procedure doc:name="Stored procedure" doc:id="ffc0e3aa-193a-4e86-91df-a52562e5acc4" 
config-ref="DB_CONfig">
        <db:sql ><![CDATA[{call 
 PKG_LOGIC_SERVICE.pr_loan_logic_check(776665544,:ll_ret_table_out)}]]></db:sql>
        <db:output-parameters >
            <db:output-parameter key="ll_ret_table_out" customType="TABLE" />
            <db:output-parameter key="as_errm" type="VARCHAR" />
        </db:output-parameters>
    </db:stored-procedure>

我在做什么错误以及在调用过程时骡子如何知道自定义类型表?

解决方法

输出类型应该是“CURSOR”而不是“TABLE”

<db:output-parameter key="ll_ret_table_out" customType="CURSOR" />

此外,我不确定 SP 调用是否仅使用 3 个参数。您是否在外部 SQL 客户端上尝试过?

您可能还想了解 Oracle UDT

,

可以按照这篇文章修复它

https://help.mulesoft.com/s/article/Calling-Oracle-Stored-Procedure-with-User-Defined-Types-UDT-as-IN-OUT-or-IN-OUT-Parameters-in-Mule-4-x