有一个表“json_test”并插入以下记录:
create table json_test ( v json);
insert into json_test values ('{"facilityId": ["20","30","40","50","51"]}')
SELECT trim(json_array_elements_text(v->'facilityId') ) from json_test
上面的选项将设施ID列为单独的行。
我需要在Postgres函数中使用相同的行将记录插入另一个表中。我写了以下代码来返回i
。选中时v_status
的输出为(20,,,,,,,,,,,,)
。我需要得到20
,但我无法得到它。
for i in SELECT json_array_elements_text(v->'facilityId') from json_test
loop
v_status:= i;
end loop;
答案 0 :(得分:1)
您没有在问题中指定整个功能定义。 假设你有DDL:
CREATE TABLE json_test(
id SERIAL PRIMARY KEY,
v JSON
);
INSERT INTO json_test(v) VALUES
('{"facilityId": ["20","30","40","50","51"]}'::JSON);
您可以查看完整的PL/pgSQL guide作为参考,但您的功能可能会定义如下:
CREATE OR REPLACE FUNCTION get_facility_ids(rid INTEGER)
RETURNS SETOF INTEGER AS $$
DECLARE
t TEXT;
BEGIN
FOR t IN SELECT json_array_elements_text(v->'facilityId')
FROM json_test WHERE id = rid
LOOP
RETURN NEXT t;
END LOOP;
END;
$$ LANGUAGE plpgsql;
SELECT get_facility_ids(1) AS facultyId;
仅为了您的信息,您可以INSERT
语句中的SELECT
条记录。检查documentation。