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

MuleSoft 4.4调用PostgreSQL存储过程配置错误修正求助

解决MuleSoft调用PostgreSQL存储过程的CALL错误

问题场景

配置MuleSoft调用PostgreSQL存储过程时,收到如下错误:

Message               : ERROR: sp_employee_generate(character varying, integer, character varying, character varying, character varying, character varying, character varying, character varying, integer, character varying) is a procedure
  Hint: To call a procedure, use CALL.
  Position: 15

原配置代码:

<db:stored-procedure doc:name="Stored procedure" doc:id="ace0cc98-d170-4d0c-b7b4-905162b03797" config-ref="Database_Config1">
    <db:sql ><![CDATA[{call sp_employee_generate(:pn_name,:pn_age,:pn_add1,:pn_add2,:pn_add3,:pn_city,:pn_state,:pn_pin,:pn_Mobile_no,:pn_Email_id,:pn_Employee_no)} ]]></db:sql>
    <db:input-parameters ><![CDATA[#[{
    "pn_name":vars.requestParam.p_name,
"pn_age":vars.requestParam.p_age,
"pn_add1":vars.requestParam.p_add1,
"pn_add2":vars.requestParam.p_add2,
"pn_add3":vars.requestParam.p_add3,
"pn_city":vars.requestParam.p_city,
"pn_state":vars.requestParam.p_state,
"pn_pin":vars.requestParam.p_pin,
"pn_Mobile_no":vars.requestParam.p_Mobile_no,
"pn_Email_id":vars.requestParam.p_Email_id}]]]></db:input-parameters>
    <db:output-parameters >
        <db:output-parameter key="pn_Employee_no" type="VARCHAR" />
    </db:output-parameters>
</db:stored-procedure>

修正方案

PostgreSQL对存储过程(PROCEDURE)要求使用原生CALL语法,不能用JDBC标准的{call ...}包裹格式。修改<db:sql>标签内的SQL语句即可解决:

修正后的配置:

<db:stored-procedure doc:name="Stored procedure" doc:id="ace0cc98-d170-4d0c-b7b4-905162b03797" config-ref="Database_Config1">
    <db:sql ><![CDATA[CALL sp_employee_generate(:pn_name,:pn_age,:pn_add1,:pn_add2,:pn_add3,:pn_city,:pn_state,:pn_pin,:pn_Mobile_no,:pn_Email_id,:pn_Employee_no)]]></db:sql>
    <db:input-parameters ><![CDATA[#[{
    "pn_name":vars.requestParam.p_name,
"pn_age":vars.requestParam.p_age,
"pn_add1":vars.requestParam.p_add1,
"pn_add2":vars.requestParam.p_add2,
"pn_add3":vars.requestParam.p_add3,
"pn_city":vars.requestParam.p_city,
"pn_state":vars.requestParam.p_state,
"pn_pin":vars.requestParam.p_pin,
"pn_Mobile_no":vars.requestParam.p_Mobile_no,
"pn_Email_id":vars.requestParam.p_Email_id}]]]></db:input-parameters>
    <db:output-parameters >
        <db:output-parameter key="pn_Employee_no" type="VARCHAR" />
    </db:output-parameters>
</db:stored-procedure>

关键修改点

  • 移除SQL语句外层的{}包裹,直接使用CALL sp_employee_generate(...)
  • 保持输入参数和输出参数的映射不变,PostgreSQL存储过程的OUT参数仍需在调用语句中作为占位符声明

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 02:26:14