如何从 Mule4 中的 Oracle 存储过程中获取 TABLE 类型 return 类型?
How to get TABLE Type return type from Oracle Stored procedure in Mule4?
您好,我正在尝试在 Oracle 中调用 return 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;
我尝试从 Mule 调用的方式如下所示
{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,987,:as_errm,: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>
我在做什么错误以及 mule 在调用过程时如何知道自定义类型 TABLE?
输出类型应该是“CURSOR”而不是“TABLE”
<db:output-parameter key="ll_ret_table_out" customType="CURSOR" />
此外,我不确定 SP 调用是否只使用 3 个参数。您是否在外部 SQL 客户端上尝试过?
您可能还想阅读有关 Oracle UDT 的内容。
可以按照这篇文章修复它
您好,我正在尝试在 Oracle 中调用 return 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;
我尝试从 Mule 调用的方式如下所示
{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,987,:as_errm,: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>
我在做什么错误以及 mule 在调用过程时如何知道自定义类型 TABLE?
输出类型应该是“CURSOR”而不是“TABLE”
<db:output-parameter key="ll_ret_table_out" customType="CURSOR" />
此外,我不确定 SP 调用是否只使用 3 个参数。您是否在外部 SQL 客户端上尝试过?
您可能还想阅读有关 Oracle UDT 的内容。
可以按照这篇文章修复它