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

PostgreSQL存储过程调用refcursor输出失败,出现<Unnamed Portal 1>问题

使用PostgreSQL Refcursor返回数据失败的解决方法

出现<Unnamed Portal 1>通常是因为游标未正确绑定名称、未在事务上下文执行,或者客户端未正确抓取游标结果。针对你的存储过程,可按以下步骤解决:

  • 必须在事务中执行操作
    PostgreSQL的refcursor依赖事务上下文,否则游标会被自动关闭。使用以下方式调用存储过程并获取结果:

    BEGIN;
    -- 使用默认游标名称
    CALL "MasterUser".s_m_userapplication('你的申请编号');
    FETCH ALL IN rs_resultone;
    COMMIT;
    

    若要自定义游标名称:

    BEGIN;
    CALL "MasterUser".s_m_userapplication('你的申请编号', 'custom_cursor');
    FETCH ALL IN custom_cursor;
    COMMIT;
    
  • 避免匿名游标
    你的存储过程已给refcursor设置默认值rs_resultone,调用时不要省略游标参数或传入空值,否则PostgreSQL会创建匿名游标,导致显示<Unnamed Portal 1>。

  • 适配客户端工具
    若使用psql,需关闭自动提交或手动开启事务:

    \set AUTOCOMMIT off
    CALL "MasterUser".s_m_userapplication('你的申请编号');
    FETCH ALL IN rs_resultone;
    
  • 验证查询逻辑
    先单独执行存储过程内的查询,确认appnov1函数的返回值与v_app_no匹配,避免因查询无结果导致游标看似无数据:

    SELECT AM_App_ProcCD,AM_App_ProcDt
    FROM "MasterUser".Master_Application
    WHERE "MasterUser".appnov1(CAST(AM_AAPP_NO_TYPE AS INTEGER), AM_AAPP_NO_YEAR, AM_AAPP_NO_MONTH, AM_AAPP_NO_SEQ) = '你的申请编号';
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 00:57:24