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

如何从Jitterbit调用PostgreSQL存储过程?求示例代码及报错解决

从Jitterbit调用PostgreSQL存储过程的正确方式及报错排查

报错原因分析

你遇到的function SPNAME(...) does not exist错误,核心原因是调用时传递的参数类型、数量/顺序与存储过程定义不匹配,或者存储过程名称的大小写处理不符合PostgreSQL规则。

排查与解决步骤

1. 确认PostgreSQL存储过程的定义

首先核对存储过程的参数名称、类型、数量和顺序,确保和调用一致。例如,假设你的存储过程定义如下:

CREATE OR REPLACE PROCEDURE "SPNAME"(
    p_imported_by1 VARCHAR,
    p_id1 INT,
    p_imported_by2 VARCHAR,
    p_id2 INT,
    OUT p_result REFCURSOR
)
LANGUAGE plpgsql
AS $$
BEGIN
    OPEN p_result FOR
        SELECT * FROM your_target_table 
        WHERE imported_by IN (p_imported_by1, p_imported_by2) 
          AND id IN (p_id1, p_id2);
END;
$$;

注意:

  • 如果存储过程名称创建时用了双引号(如"SPNAME"),调用时必须保持大小写一致并加双引号,否则PostgreSQL会自动转成小写查找,导致找不到函数。
  • 确认输入参数的类型(如VARCHAR/INT)和输出参数的REFCURSOR类型定义。

2. 修正Jitterbit调用代码

针对你的报错,需要调整参数类型转换和名称匹配,以下是修正后的示例代码:

// 定义存储过程名称(注意大小写和双引号,和创建时一致)
var spName = "\"SPNAME\""; 
// 初始化结果集变量
var resultSet = [];
// 显式转换参数类型,匹配存储过程定义
var param1 = "ImportedbySSM"; // 对应VARCHAR类型参数
var param2 = ToInteger('3784'); // 将字符串转成INT类型,匹配存储过程的INT参数
var param3 = "ImportedbySSM";
var param4 = ToInteger('2056');
// 定义游标名称,对应存储过程的OUT REFCURSOR参数
var refCursor = "swv_refcur";

// 调用存储过程
CallStoredProcedure("<TAG>Targets/Database/TestingPGSQL</TAG>", spName, resultSet,
    param1, param2, param3, param4, refCursor);

// 处理返回的结果集
if (resultSet != null && resultSet.length > 0) {
    for each (row in resultSet) {
        // 示例:打印每行的某列值
        // WriteToOperationLog(row.your_column_name);
    }
}

3. 常见问题排查清单

  • 参数类型不匹配:Jitterbit中字符串形式的数字必须用ToInteger()转成整数类型,否则会以VARCHAR传递,与存储过程的INT参数不匹配。
  • 大小写问题:PostgreSQL对标识符(表、存储过程名)的大小写敏感,未加双引号的名称会被转成小写。如果存储过程是用双引号创建的,调用时必须带双引号。
  • 权限问题:确保Jitterbit连接PostgreSQL的用户拥有该存储过程的执行权限,可执行以下SQL授权:
    GRANT EXECUTE ON PROCEDURE "SPNAME"(VARCHAR, INT, VARCHAR, INT, REFCURSOR) TO your_jitterbit_user;
    
  • 游标参数处理:存储过程必须定义OUT类型的REFCURSOR参数,Jitterbit中传递的游标名称需唯一且有效,PG会通过该游标返回结果集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 11:07:13