选择插入仅插入1条记录

时间:2020-08-12 19:24:15

标签: postgresql postgresql-9.5

我要查询所有律师和其他相关信息,并将其存储为json:

SELECT 
    key as table, trim(both '"' from json_array_elements(value)::text) as column
FROM json_each(( 
    SELECT ed.value::json FROM (SELECT * FROM config_setting WHERE name = 'lawyers') ed ))
WHERE
    key = 'user'
GROUP BY trim(both '"' from json_array_elements(value)::text), key

此查询返回2条记录(这是我期望的)。

一旦我尝试将其分配给函数中的变量,它只会返回1条记录:

CREATE OR REPLACE FUNCTION somefuncname() RETURNS tablearray LANGUAGE plpgsql AS $$
    DECLARE _rec tablearray;
    DECLARE total int;
    BEGIN
        SELECT t.column INTO _rec FROM  (
            SELECT 
                key as table, 
                trim(both '"' from json_array_elements(value)::text) as column
            FROM json_each(( 
                SELECT ed.value::json FROM (SELECT * FROM config_setting WHERE name = 'lawyers') ed ))
            WHERE
                key = 'user'
            GROUP BY trim(both '"' from json_array_elements(value)::text), key
        ) t;        
        RETURN _rec;
    END
$$;

SELECT * from somefuncname();

tablearray的定义非常简单,只是一个只有一列的表(无PK)。

为什么我的函数只返回1行而不是2行?我该如何解决?

1 个答案:

答案 0 :(得分:1)

您不能将多个记录选择到变量中。如果您希望函数返回多个记录,请使用:

RETURN QUERY SELECT t.column FROM (........) t; 
相关问题