有一个表"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;
您尚未在问题中指定整个函数定义。假设你有 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 指南作为参考,但您的函数可能定义如下:
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;
仅供您参考,您可以从SELECT
语句中INSERT
记录。查看文档。