首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Postgresql存储过程多维数组参数中的输入意外结束

Postgresql存储过程多维数组参数中的输入意外结束
EN

Stack Overflow用户
提问于 2019-03-27 20:32:12
回答 1查看 327关注 0票数 0

我在PostgreSql中构建了存储过程,它接受多维数组参数,如下所示

代码语言:javascript
运行
复制
SELECT horecami.insert_obj_common(
'{"(5, 2, LLLLL rest, 46181, a@a.com, ooo, kkk, 12:09, 20:40, 23, true, 49.667, 48.232, fu, 2011-12-15 15:28:19+04, 2011-12-15 15:28:19+04, 3, 1)"}'::obj_special[],
    '{"(1, 3, q1, q2, q3,  q4, qson  latest, true, 2011-12-15 15:28:19+04, 2, 2, 3, 2011-12-15 15:28:19+04, ' ||  '{"(1, 1, 1, 1, 1)"}'::horecami.obj_soft_hardware[] || ')"}'::obj_soft[]

);

在这个过程中,有一个没有问题的foreach循环。但是当我将最后一个额外的参数添加为数组(horecami.obj_soft_hardware[])时,它给出了格式错误的数组错误。这是错误的

代码语言:javascript
运行
复制
ERROR:  malformed array literal: "{"(1, 3, q1, q2, q3,  q4, qson  latest, true, 2011-12-15 15:28:19+04, 2, 2, 3, 2011-12-15 15:28:19+04, "
LINE 3:  '{"(1, 3, q1, q2, q3,  q4, qson  latest, true, 2011-12-15 1...
     ^
DETAIL:  Unexpected end of input.
SQL state: 22P02
Character: 202

它必须返回number

我猜是这个syntac错误。事前谢谢你。

EN

Stack Overflow用户

回答已采纳

发布于 2019-03-27 20:44:33

您没有多维数组;您有一个包含复合类型的数组,而该数组又包含一个包含复合类型的数组。

当将其写为字符串文字时,某些字符必须转义(例如,带空格的字符串需要引号,而这些引号需要转义)。然后,在嵌套级别,它们都需要双引号和转义。

要确定字符串文字应该是什么样子,只需使用实际的数组和行(或复合类型)创建它,然后转换为文本以获得包含所有字段正确引用和转义的文字字符串值:

代码语言:javascript
运行
复制
SELECT ARRAY[ROW(1, 3, 'q1', 'q2', 'q3', 'q4', 'qson  latest', ARRAY[ROW(1, 1, 1, 1, 1)])]::TEXT

返回:

代码语言:javascript
运行
复制
{"(1,3,q1,q2,q3,q4,\"qson  latest\",\"{\"\"(1,1,1,1,1)\"\"}\")"}
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55377287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档