postgresql json_build_array()函数中的FOR循环不起作用

2q5ifsrm  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(157)

我目前正在Postgres中处理一个函数。我有这个函数,但我需要在json_build_array()函数中添加一个循环来添加数组中的多个内容。这是我目前拥有的:

select jsonb_build_object('start', jsonb_build_object(
        'inv', json_build_array(
            for i in select * from generate_series(1,5) loop
            jsonb_build_object(...
            end loop

字符串
但我得到一个错误说:
在“for”处或附近出现错误。

t30tvxxf

t30tvxxf1#

FOR循环是不允许在SQL语句中使用的PL/pgSQL语法元素(即使它嵌套在PL/pgSQL块中)。
你的明显意图可以这样实现:

SELECT jsonb_build_object('start', jsonb_build_object(
          'inv', ((SELECT jsonb_agg(some_name)
                   FROM   jsonb_build_object('foo', 1) AS some_name, generate_series(1,5)))));

字符串
fiddle
jsonb_build_object('foo', 1) AS some_name替换为您需要的实际对象和名称。
当然,你必须在PL/pgSQL块中赋值或返回结果。请参阅:

  • PL/pgSQL函数中的SELECT或PERFORM

相关信息:

  • Postgres FOR LOOP

相关问题