PostgreSQL:动态查询到JSON数组

时间:2018-03-14 09:41:16

标签: json postgresql stored-procedures

我想用。执行动态查询 EXECUTE语句并将结果放入json数组。

我正在

  

SQL错误[22P02]:错误:格式错误的数组文字:“[格式错误的数组文字:”[{“id”:“1”}]“     细节:“[”必须引入明确指定的数组维度。     其中:PL / pgSQL函数....

这是我到目前为止所拥有的。

CREATE or replace function my_function()
returns json[] as $$
declare result json[];
begin
    execute '
        SELECT array_to_json(array_agg(t)) from (
            select ....
        ) t;
    ' into result;

    -- doing some stuff with the array

    return result;
END;
$$ language 'plpgsql';

1 个答案:

答案 0 :(得分:0)

作为用户" a_horse_with_no_name"说明。 array_to_json确实返回一个json对象而不是一个json数组。

在我的情况下,我可以实现我想要的东西

CREATE or replace function my_function()
returns json as $$
declare result json;
begin
    execute '
        SELECT (''{ "data": '' || json_agg(t)::text || ''}'')::json from (
            select ....
        ) t;
    ' into result;

    -- doing some stuff with the array

    return result;
END;
$$ language 'plpgsql';