You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mule 4调用Oracle存储过程传递TABLE(UDT)参数报错如何解决?

根因分析
  1. 参数转换格式错误:当前所有入参、出参的DataWeave转换规则都配置为输出application/json格式,Oracle自定义TABLE(UDT)类型的数组数据序列化后会被Mule 4 Database连接器识别为普通的LinkedHashMap对象,连接器默认只支持字符串、数字基础类型的自动转换,无法直接将JSON结构映射为Oracle UDT类型,因此触发类型转换错误。
  2. 缺少UDT类型声明:未给p_lne_tbl参数显式指定UDT类型分类器,Mule Database连接器无法识别该参数需要映射为Oracle自定义类型,会默认尝试转换为字符串传入,和存储过程定义的TABLE类型不匹配,最终触发PLS-00306参数类型不匹配报错。
解决方案

按以下步骤调整配置即可解决:

  1. 统一参数转换输出格式:将所有参数(inputParameters、outputParameters、inOutParameters、query)的DataWeave转换输出格式改为application/java,避免数据被JSON序列化丢失类型结构,示例改造后的inputParameters转换规则如下:
%dw 2.0
output application/java
---
payload.inputParameters
  1. 为UDT参数添加类型分类器:修改inputParameters转换规则,单独为p_lne_tbl参数指定Oracle UDT类型映射,替换示例中XXX_PKG.XX_INV_LINE_TBL为你实际在Oracle中定义的TABLE类型全限定名:
%dw 2.0
output application/java
---
payload.inputParameters mapObject ((value, paramKey) -> 
    if (paramKey ~= "p_lne_tbl") {
        (paramKey): {
            value: value,
            typeClassifier: {
                type: "ARRAY",
                structureName: "XXX_PKG.XX_INV_LINE_TBL"
            }
        }
    } else {
        (paramKey): value
    }
)
  1. 嵌套UDT类型适配(可选):如果你的TABLE类型是嵌套了自定义OBJECT类型,还需要为数组内的每一行对象也指定对应的STRUCT类型映射,示例如下:
%dw 2.0
output application/java
---
payload.inputParameters mapObject ((value, paramKey) -> 
    if (paramKey ~= "p_lne_tbl") {
        (paramKey): {
            value: value map (lineItem) -> {
                value: lineItem,
                typeClassifier: {
                    type: "STRUCT",
                    structureName: "XXX_PKG.XX_INV_LINE_OBJ" // 替换为实际的OBJECT类型名
                }
            },
            typeClassifier: {
                type: "ARRAY",
                structureName: "XXX_PKG.XX_INV_LINE_TBL"
            }
        }
    } else {
        (paramKey): value
    }
)
  1. JDBC驱动适配:确保使用的Oracle JDBC驱动版本为ojdbc8及以上,对UDT类型有完整的兼容支持。

内容的提问来源于stack exchange,提问作者Mayur Tripathi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 03:06:04