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

含数组参数的PL/pgSQL存储过程测试调用报错,求正确方法

解决PostgreSQL存储过程调用的数组语法错误

错误原因

你遇到的语法错误核心是PostgreSQL数组字面量的写法不符合规范,不能直接用[]定义数组,必须使用ARRAY[]的标准构造语法。同时INOUT参数的传递无需额外类型转换,因为变量已声明为TEXT类型。

正确的调用脚本

do
$$
DECLARE 
    out_error_code TEXT;
    out_error_text TEXT;
BEGIN
    CALL create_update_h(
        ARRAY['t','t','t']::CHARACTER VARYING[], 
        ARRAY['result1','result2','result3']::CHARACTER VARYING[], 
        out_error_code, 
        out_error_text
    );
    RAISE NOTICE 'myvar1 = %', out_error_code;
    RAISE NOTICE 'mymsg1 = %', out_error_text;                                     
END;
$$

关键修改点

  • 数组构造:把['t','t','t']改为ARRAY['t','t','t'],这是PostgreSQL官方规定的数组创建方式
  • 字符串标识:第二个数组中的result1等值需要添加单引号,否则会被识别为未定义变量引发新错误
  • 参数传递:INOUT参数直接传变量名out_error_code和out_error_text即可,无需::TEXT强制转换,因为DECLARE块已明确变量类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:50:22